为什么动态更改WindowStyle对我的应用程序没有影响

时间:2018-07-26 04:16:11

标签: c# .net wpf xaml user-interface

某些背景:我正在使用C#,WPF和.NET 4.6.1开发应用程序。

我有一个小问题。我定义了一个自定义WindowChrome,而不是Windows提供的默认窗口。我在标题中设置WindowStyle =“ None”,然后在MainApplication XAML页面中定义以下内容:

<WindowChrome.WindowChrome>
    <WindowChrome 
        ResizeBorderThickness="6"
        CaptionHeight="20"
        GlassFrameThickness="0"
        CornerRadius="0"
        />
</WindowChrome.WindowChrome>

现在我遇到了一个特殊问题。当您最小化一个窗口时,我失去了一些作为窗口的一部分而获得的动画功能,而我希望这样做而不是仅仅关闭应用程序。关于StackOverFlow的一些答案建议我尝试许多操作,包括在触发最小化事件时将WindowStyle设置为SingleBorderWindow,然后在重新设置后取消设置以恢复该功能。这行得通!!!

现在我做了一些不同的事情,它也可以工作,并且对我的应用程序的外观没有影响,我也不知道为什么它可以工作。我没有执行上面的解决方案,而是在XAML中将WindowStyle设置为SingleBorderWindow,它可以正常工作!!!我的窗口看起来与将WindowStyle设置为None完全相同,或者,在构造函数中调用InitializeComponents()之后,我只是简单地输入this.WindowStyle = WindowStyle.SingleBorderWindow。同样,这对我的应用程序的外观没有影响。

为什么?

1 个答案:

答案 0 :(得分:0)

由于WindowStyle'None'和'SingleBorderWindow'之间的唯一区别是您已覆盖了WindowChrome,因此使用任何WindowStyle都不会有任何区别