C# 如何在用户单击wpf应用程序中的mainwindow时关闭窗口

C# 如何在用户单击wpf应用程序中的mainwindow时关闭窗口,c#,wpf,C#,Wpf,我有一个WPF应用程序,它将窗口显示为对话框。 我想在应用程序中单击主窗口上的任意位置时关闭此对话框 这里我添加一个示例来解释 应用程序主窗口 您可以使用对话框窗口的停用事件来执行此操作 像这样的 XAML 如果使用ShowDialog调用对话框,则后台窗口(即主窗口)将被禁用,直到您关闭对话框,并且对话框不会得到任何单击,因此,除非使用Show方法调用对话框,该方法不会锁定后台窗口,否则无法实现您想要的功能,然后,您可以在MainWindow GotFocus启动时关闭对话框。您必须将第二个

我有一个WPF应用程序,它将窗口显示为对话框。 我想在应用程序中单击主窗口上的任意位置时关闭此对话框

这里我添加一个示例来解释

应用程序主窗口


您可以使用对话框窗口的停用事件来执行此操作

像这样的

XAML


如果使用ShowDialog调用对话框,则后台窗口(即主窗口)将被禁用,直到您关闭对话框,并且对话框不会得到任何单击,因此,除非使用Show方法调用对话框,该方法不会锁定后台窗口,否则无法实现您想要的功能,然后,您可以在MainWindow GotFocus启动时关闭对话框。

您必须将第二个窗口声明为全局变量,并调用.Hide()和.Show()命令,如下所示:

主窗口:

public partial class MainWindow : Form
{
    private Dialog m_Dialog;

    public MainWindow()
    {
        InitializeComponent();
        m_Dialog = new Dialog();
        this.Click += closeDialog;
    }

    private void closeDialog(object sender, EventArgs e)
    {
        m_Dialog.Hide();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        m_Dialog.Show();
    }
}
它很好用

已更新

下面是WPF的相同代码。我以前在WinForms中做过:

public partial class MainWindow : Window
{
    private Dialog m_Dialog;

    public MainWindow()
    {
        InitializeComponent();
        m_Dialog = new Dialog();
        this.MouseDoubleClick += onCloseDialog;
    }

    private void onCloseDialog(object sender, MouseButtonEventArgs e)
    {
        m_Dialog.Hide();
    }

    private void onButton(object sender, RoutedEventArgs e)
    {
        m_Dialog.Show();
    }
}
当然,您可以使用另一个事件来代替鼠标双击。
如果确实要关闭窗口,则必须使用.close()命令并每次调用窗口的构造函数。

首先将
temp\u窗口声明为字段,而不是局部变量:

private Window1 temp_Window;
打开新窗口时,不要将其作为对话框打开,否则,将不会使用
Show()
而不是
ShowDialog()
处理主窗口上的事件:

在主窗口上处理
mouseDown
事件:

MouseDown="MainWindow_OnMouseDown"
然后关闭处理程序中的
tempWindow

 private void MainWindow_OnMouseDown(object sender, MouseButtonEventArgs e)
    {
        tempWindow .Close();
    }

当我单击应用程序外部而不是在应用程序的主窗口上时,它会关闭窗口。当你单击主窗口时,它会在对话框窗口外部。当我单击主窗口时,它会在对话框窗口外部,但只有当我单击整个应用程序外部时它才会关闭对话框。我知道了,你需要用show()打开对话框Methods而不是showdialog()method@SamTheDev当点击应用程序主窗口上的任意位置时,我尝试关闭窗口(我在应用程序中使用DialogBox打开)
private void Button_Click(object sender, RoutedEventArgs e)
        {
            temp_Window = new Window1();
            temp_Window.Show();
        }
MouseDown="MainWindow_OnMouseDown"
 private void MainWindow_OnMouseDown(object sender, MouseButtonEventArgs e)
    {
        tempWindow .Close();
    }