我想要做的是定义我自己的一组已知颜色名称,WPF将使用“Red”来查找它,在这种情况下称为CustomRed,它适用于应用程序范围。
// Custom known name, this is what i would like to do.
<Border Background="CustomRed"></Border>
// System color name.
<Border Background="Red"></Border>
// Static hex value.
<Border Background="#FF0000"></Border>
// Bind to data context.
<Border Background="{Binding CustomRed}"></Border>
您可以将其定义为资源。在资源字典中定义如下:
<SolidColorBrush x:Key="CustomRed">#FF0000</SolidColorBrush>
然后像这样使用它:
<Border Background="{StaticRecource CustomRed}"></Border>
添加到@ MahdiAtaollahi的答案,您还可以使用ARGB值而不是十六进制值:
<Window.Resources>
<SolidColorBrush x:Key="LikeGreen">
<SolidColorBrush.Color>
<Color R="100" G="200" B="30" A="100"/>
</SolidColorBrush.Color>
</SolidColorBrush>
</Window.Resources>
并使用它:
<Button Background="{StaticResource LikeGreen}"/>
XAML处理器使用TypeConverters将字符串值转换为属性的实际类型。这就是字符串'Red'如何转换为背景属性的SolidColorBrush Brushes.Red。虽然您可以定义自己的TypeConverter,但遗憾的是您只能将它附加到您自己的类型,因为您需要将TypeConverterAttribute添加到该类型中。无法将自定义TypeConverter与“刷子”或“颜色”等框架类相关联。
使用StaticResource或DynamicResource标记扩展名为@MahdiAtaollahi,是您可以获得的最接近的。