【问题标题】:C# WPF Xaml: Globally set all text in a view to one color, and all backgrounds to anotherC# WPF Xaml:将视图中的所有文本全局设置为一种颜色,并将所有背景设置为另一种颜色
【发布时间】:2015-07-11 09:01:08
【问题描述】:

有没有办法(使用数据绑定或简单的 xaml)将视图中所有元素的背景设置为一种颜色,并将所有文本设置为另一种颜色?

我知道我可以一个一个地编辑视图中的每个元素,但我想看看这是否可以通过全局级别的设置来实现。有点像默认情况下所有内容都设置为白底黑字。

我想我要问的是 WPF 应用程序的功能/设置是否提供了我正在寻找的东西,和/或我应该搜索什么以在线找到答案。

我的项目没有使用任何东西,除了 Visual Studio 在您创建 WPF 项目时提供的东西,所以我不能使用 prism 或 mvvm light 方法。

提前感谢您的回答!

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    全局...或简单的 XAML... 是否有 WPF 应用程序的功能/设置可以提供我正在寻找的内容

    在应用程序资源中添加如下样式:

    <Style TargetType="Control">
      <Setter Property="Background" Value ="Blue"/>
      <Setter Property="Foreground" Value ="Red"/>
    </Style>
    <Style TargetType="TextBlock">
      <Setter Property="Background" Value ="Blue"/>
      <Setter Property="Foreground" Value ="Red"/>
    </Style>
    

    根据您要设置背景的目标元素。

    【讨论】:

    • 另外,为了让用户清楚,它也可以是页面的资源,甚至是目标控件的资源,根据需要提供范围。
    【解决方案2】:

    当你说“视图中所有元素的背景”时,你应该更具体,如果你所说的“元素”是指UIElement,那么@987654323 中没有Background 属性@。如果它表示Control,那么不是所有UIElements派生自Control(例如TextBlock),最后如果它表示您的视图中定义的每个UIElement派生类型都具有Background属性,那么您应该添加不同的样式对于每种类型,无需将 x:key 设置为 YourView.Resources,如下所示:

    <Window.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Background" Value="Red" />
            <Setter Property="Foreground" Value="Blue" />
        </Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Red" />
            <Setter Property="Foreground" Value="Blue" />
        </Style>
        ...
    </Window.Resources>
    

    【讨论】:

    • TextBlock 不是控件类型。
    【解决方案3】:

    使用控件集合来控制WPF中的所有控件

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多