Tim*_*uri 11 c# wpf modal-dialog
我有一个WPF窗口,它作为一种"通知程序窗口"在后台线程上运行...当一个事件被引发时,它会显示一条消息......用户点击"贪睡"按钮然后我打电话 this.Visibility = Visibility.Collapsed
我隐藏窗口的那一刻(通过调用this.Hide()
或设置Visibility
如上所述)......"ShowDialog()"代码释放窗口并关闭它.
这绝对是WPF代码中的一个错误(我通过反射器识别出来的......)但我的问题仍然存在.有没有人能够为这个问题找到解决办法?
我已经尝试了很多东西,现在我正在接触到聪明的人:)
您无法隐藏模态对话框.这就像是在问:"我如何反向达到100英里/小时?" 你没有,你开车前进.
使用Show,而不是ShowDialog.或者,当需要再次显示时,您可以简单地重新显示ShowDialog.
好吧,很快 - 我的老板(他是一个老 C++ 傻瓜)就找到了答案。
这是我的后台线程(设置为 STA 模式)内的代码:
// Show dialog - keeps the thread open and shows the window! Yay!!!
new BeamUI.Notifier.NotifierWindow().ShowDialog();
Run Code Online (Sandbox Code Playgroud)
这是修改,奇怪的是,它完美地工作了:)
// Show... hmm, that shows the window... but how do I keep this thread open?
new BeamUI.Notifier.NotifierWindow().Show();
// ZOMG - a line of code that JUST keeps the thread (and msgpump) going!!!
System.Windows.Threading.Dispatcher.Run();
Run Code Online (Sandbox Code Playgroud)
就是这样。
这种事情让我讨厌 C++ 人,并且让我想说“如果你一开始就把它构建正确,我就不必寻找解决方法了!” (j/k)
归档时间: |
|
查看次数: |
8408 次 |
最近记录: |