Wpf 如何在XAML中定义和使用变量来定义颜色?

Wpf 如何在XAML中定义和使用变量来定义颜色?,wpf,xaml,Wpf,Xaml,我的XAML中有许多元素将前台=“#555”定义为只读文本框中褪色文本的颜色 <TextBlock Text="{Binding SingularModelClassFileTitle}" Margin="0 10 0 0"/> <TextBox Text="{Binding SingularModelClassFileName}" HorizontalAlignment="Left" IsReadOnly="True" F

我的XAML中有许多元素将前台=“#555”定义为只读文本框中褪色文本的颜色

<TextBlock Text="{Binding SingularModelClassFileTitle}" Margin="0 10 0 0"/>
<TextBox Text="{Binding SingularModelClassFileName}"
         HorizontalAlignment="Left"
         IsReadOnly="True"
         Foreground="#555"
         Width="500"/>
<TextBox 
 VerticalScrollBarVisibility="Visible"
 AcceptsReturn="True"                  
 Width="500" 
 Height="100" 
 IsReadOnly="True" 
 Foreground="#555"
 Text="{Binding SingularModelClassContent}"
 HorizontalAlignment="Left"
 Margin="0 0 0 20"/>

如何将该值放入XAML变量中,并在每个属性中引用它,以便只需在一个位置更改它

我想你可以做这样的事:

<sys:String x:Key="ReadOnlyTextColor">#555</sys:String>

...

    <TextBox Foreground="{StaticResource ReadOnlyTextColor}"/>
#555
...

那么该属性的引用是什么?

尝试将颜色定义为:



有时您可能需要定义颜色而不是画笔:(一种情况是您希望能够使用颜色参数定义渐变) 在这种情况下,您可以这样定义它们:

 <Color x:Key="ButtonColor1">Blue</Color>
 <Color x:Key="ButtonColor1">#AABBCC</Color>
 <Color x:Key="ButtonColor1" A="0" R="124" G="111" B="44"/>
蓝色
#AABBCC

爱德华,你问的问题很好。学习WPF时,您的名字会一次又一次地弹出;-)遗憾的是,最后一个选项在Windows Phone上抛出“无法从文本“00”创建“System.Byte”。第二个很有魅力,干杯!然后要引用颜色use
{StaticResource Blue}
@StephenHosking,否,要引用颜色use
{StaticResource ButtonColor1}
最后一个应该是
A=“0”
。您在这里使用的是字节,而不是十六进制数字的字符串表示形式。Matt是
Color
不能直接用作
StaticResource
的原因,因为它是值类型,而不是引用类型?@MattDavis
Color
无法使用,因为TextBox的前台属性是
Brush
类型。您可以创建一个
颜色
,并在
SolidColorBrush
中引用它作为
StaticResource
<TextBox Foreground="{StaticResource ReadOnlyTextColor}" />
 <Color x:Key="ButtonColor1">Blue</Color>
 <Color x:Key="ButtonColor1">#AABBCC</Color>
 <Color x:Key="ButtonColor1" A="0" R="124" G="111" B="44"/>