【问题标题】:How to make multiple SolidColorBrush refer to one color in ResourceDictionary?如何使多个 SolidColorBrush 引用 ResourceDictionary 中的一种颜色?
【发布时间】:2020-03-29 21:17:04
【问题描述】:

我有一个 "ResourceDictionary1.xaml" 文件来控制 "MainWindow.xaml" 文件中的颜色(用于蒙皮),它工作正常。

为了在颜色方面具有灵活性,我为每个单独的控件定义了单独的 SolidColorBrush 资源。但大多数情况下,多个 SolidColorBrush 使用相同颜色来获得干净的外观。

现在,当我想更改颜色时,我需要在所有 SolidColorBrush 资源中更改它。所以我想将所有 SolidColorBrush 颜色绑定到一个颜色资源。当我需要完全控制时,我可以删除绑定并指定另一种颜色。

所以我在 ResourceDictionary 文件中创建了颜色资源。但是在尝试绑定颜色时,Key 并没有出现在 VisualStudio 的智能感知中。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:WPFWindow.Skins"
                xmlns:sys="clr-namespace:System;assembly=mscorlib">


<Color x:Key="DarkH">#444444</Color>
<Color x:Key="DarkM">#555555</Color>
<Color x:Key="DarkL">#666666</Color>


<sys:String x:Key="TitleName">My App</sys:String>
<sys:Double x:Key="TitleBarHeight">32</sys:Double>
<SolidColorBrush x:Key="CicleMOut" Color="#aaaaaa"/>
<SolidColorBrush x:Key="CicleMOver" Color="#dddddd"/>
<Thickness  x:Key="CircleMargin">8</Thickness>
<SolidColorBrush x:Key="TitleBarMOut" Color="#555555"/>
<SolidColorBrush x:Key="TitleBarMOver" Color="#555555"/>
<SolidColorBrush x:Key="ExitMOut" Color="#555555"/>
<SolidColorBrush x:Key="ExitMOver" Color="#666666"/>
<SolidColorBrush x:Key="ExitCross" Color="#aaaaaa"/>
<Thickness  x:Key="CrossMargin">12</Thickness>
<sys:Double x:Key="CrossThickness">2</sys:Double>
<SolidColorBrush x:Key="MaxiMOut" Color="#555555"/>
<SolidColorBrush x:Key="MaxiMOver" Color="#666666"/>
<SolidColorBrush x:Key="MaxiBox" Color="#aaaaaa"/>
<Thickness  x:Key="BoxMargin">12</Thickness>
<sys:Double x:Key="BoxThickness">1</sys:Double>
<SolidColorBrush x:Key="MiniMOut" Color="#555555"/>
<SolidColorBrush x:Key="MiniMOver" Color="#666666"/>
<SolidColorBrush x:Key="MiniBar" Color="#aaaaaa"/>
<Thickness  x:Key="BarMargin">12</Thickness>
<sys:Double x:Key="BarThickness">1</sys:Double>
<SolidColorBrush x:Key="TitleBrs" Color="#aaaaaa"/>
<sys:Double x:Key="TitleFontSize">14</sys:Double>
<SolidColorBrush x:Key="FrmBdy" Color="#666666" />

假设我想将 SolidColorBrush 颜色绑定到 DarkH 颜色。

<SolidColorBrush x:Key="FrmBdy" Color="{Binding DarkH}" />

这不起作用。我知道了,这种方式绑定是不可能的。

那么有没有其他方法可以让多个画笔指一种颜色呢?

因为当有 20 个或更多 SolidColorBrush 时,将每个画笔中的颜色更改为相同颜色听起来效率不高,并且由于上述灵活性原因,不能使用单个 SolidColorBrush。

我是 WPF 新手,是从 WinForms 迁移过来的。仍在尝试做一些中间 WPF 的东西。 谢谢。

【问题讨论】:

    标签: wpf xaml binding


    【解决方案1】:

    你很亲密

    <SolidColorBrush x:Key="FrmBdy" Color="{StaticResource DarkH}" />
    

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 1970-01-01
      • 2012-02-18
      • 2020-05-09
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2022-01-06
      • 2019-01-29
      相关资源
      最近更新 更多