【问题标题】:BackgroundColor for all windows所有窗口的背景颜色
【发布时间】:2012-02-05 20:26:09
【问题描述】:

在我的 WPF 应用程序中,我希望用户可以随意更改背景颜色。如何从一个窗口设置背景颜色,我可以将其设置为我的应用程序中的所有窗口?

我该如何管理?

【问题讨论】:

    标签: c# wpf background-color


    【解决方案1】:

    您可以在所有窗口的背景中动态引用(使用DynamicResource)在Application.Resources 中定义的相同SolidColorBrush,如果然后用另一个画笔替换此资源,窗口将更新。

    或者,您可以在某个位置(例如,在 App 类中的某些全局可访问的设置中)创建一个带有更改通知的 Brush 属性,您可以绑定到该属性。

    【讨论】:

    • 很高兴知道这一点。出于某种原因,我一直认为画笔在 .NET 中是不可变的(我猜是因为字体是),但我显然错了。
    • @Groo:其实你是对的。对不起,你应该通过DynamicResource引用画笔并完全关闭它,我的记忆不准确
    • 当我读到你的帖子时,我去MSDN检查了SolidColorBrush.Color是否可以修改,它确实有一个set访问器。我希望所有表单都应该明确无效,但为什么它不起作用?
    • @Groo: SolidColorBrushfreezable,一旦冻结就无法更改。
    【解决方案2】:

    您没有说它是 Web 应用程序还是桌面应用程序,也没有说明您是否使用 MVVM 模式,但我建议您在应用程序的样式表中进行设置。然后在 XAML 中为每个“窗口”引用它。

    【讨论】:

    • 不幸的是,使用主题样式通常不适用于窗口,因为样式不是继承的,并且窗口是通过继承 Window 创建的。
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2010-12-03
    • 2012-10-22
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多