【发布时间】: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 的东西。 谢谢。
【问题讨论】: