使用在ContentControl上定义的本地资源

时间:2019-02-22 07:29:24

标签: wpf

我有一个要在控件上使用的本地资源。我想直接在控件上定义资源,因为这是将要使用的唯一位置。

<Button Background="{StaticResource MyBrush}">
  <Button.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="#FFD71526"/>
  </Button.Resources>
</Button>

这不起作用在设置背景时尚未定义MyBrush。它可以作为DynamicResource使用,但我想使其保持静态。

问题:如何使用直接在控件上定义的资源在控件上设置属性?

我尝试在创建资源后设置属性,但是如果可能的话,我似乎找不到正确的语法。

<Button>
  <Button.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="#FFD71526"/>
  </Button.Resources>
  <Button.Background>
    {StaticResource MyBrush}
  </Button.Background>
</Button>

2 个答案:

答案 0 :(得分:2)

正确的语法如下:

required

答案 1 :(得分:-1)

如果您不想在其他任何地方使用颜色,那么首先就没有必要使用静态资源! 如果是一次使用,只需像这样直接将其放在属性中:

<Button Background="#FFD71526">
</Button>

将颜色定义为静态资源仅对具有多个计划重用该属性的子项的父项有意义。

编辑: 您可以为此目的使用它,设置一次背景,然后将所有其他属性(例如BorderBrush)绑定到背景,如下所示:

<Button 
     Background="#FFD71526" 
     BorderBrush="{Binding RelativeSource={RelativeSource Self}, Path=Background}"  
     BorderThickness="5">
</Button>