【问题标题】:Why does dynamically changing the WindowStyle have no effect on my application为什么动态更改 WindowStyle 对我的应用程序没有影响
【发布时间】:2019-01-02 23:34:09
【问题描述】:

一些背景知识:我正在使用 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 放入。同样,这对我的应用程序的外观没有影响。

为什么?

【问题讨论】:

  • 如果你覆盖了默认的 chrome,那么你需要自己定义改变窗口样式的行为。
  • 您能详细说明一下吗?我不明白,我对这个有点新。我确实自己改变了窗口样式。问题是,当我这样做时,它没有任何区别

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2012-04-24
    • 2011-07-02
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多