【问题标题】:Cannot change window size and position between hide and show无法在隐藏和显示之间更改窗口大小和位置
【发布时间】:2015-10-23 10:33:45
【问题描述】:

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

我有两个不同的问题。

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

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

如果我这样做,就会出现更严重的问题

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

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

编辑

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

【问题讨论】:

    标签: wpf resize window flicker sizetocontent


    【解决方案1】:

    还没有时间完全解决您的问题,但您的代码中存在的一个问题是您没有根据您的模式设置窗口状态。在 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 导致的问题。

    【讨论】:

    • 嗨马克西姆!感谢您指出这一点,但不幸的是,这不会以任何方式导致错误。但我已经解决了这个问题,还删除了一些不必要的 devexpress 引用并重新上传了项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2010-11-25
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多