【问题标题】:Defining a color in App.xaml and using as a static resource在 App.xaml 中定义颜色并用作静态资源
【发布时间】:2015-05-15 05:15:42
【问题描述】:

编辑:看起来这与我声明颜色的方式有关 - 使用十六进制值似乎可以很好地实现它。

编辑:这是关于从 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>

当我将它作为静态资源应用到按钮的背景时,它不适用:

Background="{StaticResource TestBlue}" 

当我窥探控件时,它会将背景声明为其他值:

如果我将其设置为本身的条目(如 ViewModelLocator),它也不起作用。如果我将它放在 Window.Resources 中,它确实有效。有什么想法吗?

【问题讨论】:

标签: wpf xaml


【解决方案1】:

您需要为 Alpha(透明)通道提供值,因为颜色是结构,并且该值的默认值为零(透明)。

<Color A="255" R="0" G="86" B="45"/>

【讨论】:

  • 谢谢 - 这很简单 :)
【解决方案2】:

要将其用作静态资源,您必须在要使用资源的地方包含您的 ResourceDictionnary。否则,您必须将其用作 DynamicResource。

因此,如果您的按钮位于其自己的 xaml 文件中,则您必须将 ResourceDictionnary 包含在按钮的 xaml 文件中,就像您在 App.xaml 中所做的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多