编辑:看起来这与我宣布颜色的方式有关 - 使用十六进制值似乎可以很好地完成它。
编辑:这是关于引用来自 App.xaml文件。如果声明为本地资源,颜色本身可以正常工作。
我创造了一种颜色:
<SolidColorBrush x:Key="TestBlue">
<SolidColorBrush.Color>
<Color R="0" G="86" B="45"/>
</SolidColorBrush.Color>
</SolidColorBrush>
并将其放在ResourceDictionary中。然后我在MergedDictionary中引用它:
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True"/>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Colours.xaml"/>
<ResourceDictionary Source="View\Item\ItemResource.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
当我将Button作为StaticResource应用于Button的背景时,它不适用:
Background="{StaticResource TestBlue}"
当我Snoop控件时,它将Background声明为其他值:
如果我将其作为自身的条目(如ViewModelLocator),它也不起作用。如果我将它放在Window.Resources中它确实有效。任何想法在这里发生了什么?
答案 0 :(得分:3)
您需要为Alpha(透明度)通道提供值,因为Color是结构,并且该值的默认值为零(透明)。
<Color A="255" R="0" G="86" B="45"/>
答案 1 :(得分:0)
要将其用作StaticResource,您必须将ResourceDictionnary包含在要使用资源的位置。否则,您必须将其用作DynamicResource。
因此,如果您的按钮位于其自己的xaml文件中,则必须将您的ResourceDictionnary包含在按钮的xaml文件中,就像在App.xaml中一样。