4

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

我跟着这个链接。用于打开用户控件作为对话窗口。

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();
    }

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

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

        objWindow.Close();
 }

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

4

2 回答 2

7

您需要Window先从当前获取父级UserControl,然后再获取父级Close

实现这一目标的一种解决方案可能是以下一种:

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

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

返回对 Window 对象的引用,该对象承载依赖对象所在的内容树。

于 2013-11-06T11:46:04.983 回答
1

尝试

private void btnClose_Click(object sender, RoutedEventArgs e)
{     
    this.Close();
}

那应该工作:-)

于 2013-11-06T11:35:19.253 回答