Window(System.Windows)
可以知道它是Show()
还是ShowDialog()
打开了?
如果在DialogResult
方法打开的窗口上设置Show()
,
它会抛出InvalidOperationException
(MSDN)。
有没有办法知道窗户是如何打开并避开它的?
我应该使用try-catch
吗?
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
}
private void CancelButton_OnClick([NotNull] object sender, [NotNull] RoutedEventArgs e) {
DialogResult = false; // throws an InvalidOperationException.
}
}
答案 0 :(得分:1)
System.Windows.Interop.ComponentDispatcher.IsThreadModal
获取一个值,即如果使用Window.ShowDialog()
打开它
答案 1 :(得分:1)
您可以使用覆盖/新Window
方法基于ShowDialog()
定义新类,如果调用公共属性bool IsModal
,则将其设置为true
。不要忘记给base.ShowDialog()
打电话。您可能需要对XAML文件(类名等)添加一些更改。
但是,如果您需要在类实例上添加IsModal
属性,则应先检查。否则,或者如果你想检查任何其他窗口,这将无济于事。