当用户在WPF对话框窗口外单击时如何关闭该窗口

15
我想在用户点击窗口之外的任何地方时关闭System.Windows.Window。该窗口显示为Dialogbox。如何接收wpf窗口之外的单击事件?
AppointmentDetailsView.ShowDialog();

2
作为用户,我不喜欢这种行为 ;) - blindmeis
5
你好,@blindmeis,显然你还没有遇到一个使用情况,请查看Metrotwit。 - frostymarvelous
2个回答

24

这个怎么样?

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    protected override void OnDeactivated(EventArgs e)
    {
        base.OnDeactivated(e);
        Close();
    }
}

5
这是一个更简单的解决方案,它有效。您也可以在XAML或代码中添加一个事件处理程序到“Deactivated”事件:'Deactivated="Window_Deactivated"'(在XAML中),或 'Deactivated += Window_Deactivated;'(在代码中)。然后在处理程序中调用close()函数即可。 - sprite
1
这里有一个问题;如果用户按右上角的X,窗口将关闭并且Close操作将生成异常。 - Kolky

0
在关闭操作中添加以下代码。异常将不会生成。 在关闭按钮事件中调用Close方法之前取消订阅“Deactivate”事件。
e.g.
this.Deactivate -= OnDeactivate();
this.Close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接