1

我有三个窗户。FirstWindow,SecondWindowThirdWindow. FirstWindow有按钮并单击此按钮打开SecondWindow. 类似地,SecondWindow有按钮并单击此按钮会打开ThirdWindow. Owner的属性SecondWindow设置为FirstWindowOwner的属性ThirdWindow设置为SecondWindow。场景描述问题:

连续打开所有窗口。它看起来像这样:

在此处输入图像描述

然后通过单击右上角的相应图标最小化所有窗口ThirdWindow。如果您尝试通过单击任务栏中的FirstLevelWindow或来最大化所有窗口ThirdLevelWinow- 一切都会好的,三个窗口将被最大化。但是如果你点击SecondWindow你会看到这个:

在此处输入图像描述

我该如何修复它,或者它只是WPF错误?如果有帮助,我可以提供存档的示例项目。

更新

最小化窗口 - 单击“_”图标,窗口图标栏中的左侧图标。所有的窗口都是模态的,即它是用ShowDialog()方法打开的,而不是用Show()方法打开的。因此,如果您最小化第三个窗口 - 所有窗口都将被最小化。

如果您不想通过链接下载项目,请在此处使用代码:

FirstWindowXAML:

<Button Click="OpenChildWindow" 
        Content="ChildWindow"/>

FirstWindow。CS:

private void OpenChildWindow(Object sender, RoutedEventArgs e)
{
    var window = new SecondLevelWindow();
    window.Owner = this;
    window.ShowDialog();
}

SecondWindowXAML:

<Button Click="OpenChildWindow" 
        Content="ChildWindow"/>

SecondWindow。CS:

private void OpenChildWindow(Object sender, RoutedEventArgs e)
{
    var window = new ThirdLevelWindow();
    window.Owner = this;
    window.ShowDialog();
}

ThirdWindow是没有任何内容的空窗口。

这里 链接到示例项目

我刚刚发现,如果属性设置为“NoResize” ResizeMode,则不会重现该错误。ThirdWindowMb 这将是有用的信息。

4

1 回答 1

2

好吧,我承认我不知道发生了什么。您是否尝试添加第四个窗口?这变得更奇怪了:第二个窗口带回了第三个窗口,但第四个窗口仍然没有回来。

无论如何,如果我必须解决这个问题,我会在每个父窗口中保留我的 childWindow 的引用。这样,在任何有趣的事件上(例如在您的示例中的第二个窗口上激活)我都可以根据需要管理我孩子的状态(WindowState.Normal在您的情况下)。

可能是这样的:在 secondWindow 的 xaml 中:

Activated="SecondLevelWindow_OnActivated"

然后在后面的代码中:

        private ThirdLevelWindow _window;

        public SecondLevelWindow()
        {
            InitializeComponent();
        }

        private void OpenChildWindow(Object sender, RoutedEventArgs e)
        {
            _window = new ThirdLevelWindow ();
            _window.Owner = this;
            _window.ShowDialog();
        }

        public void SecondLevelWindow_OnActivated(object sender, EventArgs e)
        {
            if (_window != null)
            {
                _window.WindowState = WindowState.Normal;
            }
        }

这是一个开始,但您也可以检查您当前的状态来定义您孩子的状态。

希望能帮助到你。

于 2014-08-22T13:34:00.323 回答