2

在我的场景中,我有一个窗口,我想用它以两种不同的方式显示。窗口具有WindowState = WindowState.Normal;的一种方式和窗口具有正常或最大化状态的另一种方式。我想保存这两种窗口模式的大小和位置,因此对于用户来说,它看起来像是两个单独的窗口。

我有两个不同的问题。

1) 当我在调用 Show() 后初始化窗口时,有一个小闪烁,在较慢的机器上不是这么短的闪烁。为了解决这个问题,我想在隐藏时设置窗口,如下所示:

            ((SecondWindowViewModel)this.DataContext).LoadWindowPosition(mode);
            this.Show();

如果我这样做,就会出现更糟糕的问题

2)在这种情况下,在窗口 2 以最大化模式关闭后,处于正常模式的窗口 1 在拖动时设置了一些随机高度。

我创建了一个示例应用程序,您可以在此处找到,您可以在其中看到确切的问题,我还写下了重现的步骤。

编辑

实施了 Maxims 更改并删除了不必要的引用

4

1 回答 1

0

还没有时间完全解决您的问题,但是您在代码中遇到的一个问题是您没有根据您的模式设置窗口状态。在 SecondWindow.xaml.cs 中,您的代码应如下所示:

        if (mode == WindowViewMode.Normal)
        {
            WindowState = WindowState.Normal;
        }
        else
        {
            WindowState = WindowState.Maximized;
        }

        if (this.IsVisible)
        {
            this.Hide();
        }
        else
        {
            ((SecondWindowViewModel)this.DataContext).LoadWindowPosition(mode);
            this.Show();

        }

仍然需要查看您的 LoadWindowPosition 导致的问题。

于 2015-07-31T19:37:42.683 回答