我们如何关闭自定义UserControl作为对话框?

Man*_*aju 4 c# wpf .net-4.0

我设计了一个UserControl,并计划在单击MainWindow中的按钮时将其显示为弹出窗口.

我按照这个链接.用于打开usercontrol作为对话框窗口.

private void btnInstApp_Click(object sender, RoutedEventArgs e)
    {
        Window objWindow = new Window
        {
            Title = "Title 12345",
            WindowStyle = WindowStyle.None,
            WindowStartupLocation = WindowStartupLocation.CenterScreen,
            AllowsTransparency=true,
            Width = 500,
            Height = 200,
            Content = new ucInstrumentApp()
        };

        objWindow.ShowDialog();
    }
Run Code Online (Sandbox Code Playgroud)

我用NoneWindowStyle.并在UserControl中设计了一个自定义关闭按钮,用于关闭弹出/对话框窗口.我尝试了下面给出的代码.但它不起作用.

 private void btnClose_Click(object sender, RoutedEventArgs e)
 {      
        //this.Close(); //:not working      
        Window objWindow = new Window
        {               
            Content = new ucInstrumentApp()
        };

        objWindow.Close();
 }
Run Code Online (Sandbox Code Playgroud)

我是WPF/Windows表单的新手.你能指导我解决这个问题.

Air*_*irL 7

你需要Window从你当前的UserControl那个中获取父级然后Close它.

实现这样的事情的一个解决方案可能是以下一个:

    private void btnClose_Click(object sender, RoutedEventArgs e)
    {
         Window parentWindow = Window.GetWindow((DependencyObject)sender);
         if (parentWindow != null)
         {
             parentWindow.Close();
         }
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,它基于Window.GetWindow方法,这里是它的描述:

返回对承载依赖项对象所在的内容树的Window对象的引用.