We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
来自:WPF教学|深度解析基于ResourceDictionary的WPF动态主题框架架构|DynamicTheme | 内附源码
非常感谢回复,这个bug困扰了我好几天,也研究了各种方法,有的能绕过,但都不优雅。
需求场景很简单:用一个Popup(粉色的那个区域)来实现快捷输入,点击Popup外的任意地方,Popup自动关闭,如下图。
在一篇文章(也是一位微软MVP)中有提到Popup存在的问题:https://blog.walterlv.com/post/how-to-open-a-wpf-popup.html
通过google/chatgpt/stackoverflow 都没找到比较理想的解决方法解决。
代码文件:PopupBug.zip
The text was updated successfully, but these errors were encountered:
private async void textPop_MouseDoubleClick(object sender, MouseButtonEventArgs e) { while (e.ButtonState != MouseButtonState.Released) { await Task.Delay(1); } this.OpenPop(); }
因为MouseDoubleClick其实和MouseLeftButtonDown一样是在点击Pressed的瞬间触发事件的,所以在弹出窗口打开的节点和MouseDoubleClick结束的节点(也就是松开鼠标的节点)之间,再加上TextBox焦点的特殊性,就会产生问题。所以这一点可能会被看作是一个bug,但是当这些复杂的现象结合在一起的时候,可能它内部情况也是会变得非常复杂。
所以这里我们可以通过e.ButtonState或Mouse.LeftButton来等待这个按钮的状态变为Released时候,然后在TextBox的MouseDoubleClick Event完全结束的节点(就是Released节点)的时候执行OpenPopup();。
当然也可以不检查Released状态,直接给一个合适的Task.Delay,但如果你要精确控制的话,最好还是检查一下Released状态。
@kwonganding 另外,我们SmartDate那个教学视频中也详细的介绍了Popup相关的内容,有空的时候可以研究一下,对理解Popup也会有很大帮助!
Sorry, something went wrong.
学习了,非常非常感谢。这就去学学SmartDate
No branches or pull requests
非常感谢回复,这个bug困扰了我好几天,也研究了各种方法,有的能绕过,但都不优雅。
需求场景很简单:用一个Popup(粉色的那个区域)来实现快捷输入,点击Popup外的任意地方,Popup自动关闭,如下图。
通过google/chatgpt/stackoverflow 都没找到比较理想的解决方法解决。
代码文件:PopupBug.zip
The text was updated successfully, but these errors were encountered: