我有一个由许多部分组成的自定义控件。
其中一个部分是Border
。
我需要从控件外部设置该边框的样式,因此我创建了一个Style类型的依赖项属性,并将其绑定到Border,如下所示:
<ControlTemplate TargetType="{x:Type cc:DrawingLayer}" >
...
<Grid x:Name="grid" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" >
<Border x:Name="PART_AreaSelector" Style="{Binding AreaSelectorStyle}" BorderBrush="#FF3399FF" BorderThickness="1" Background="#55ADD8E6" />
</Grid>
</ControlTemplate>
在我使用控件的窗口中,我尝试以这种方式定义其样式:
<cc:DrawingLayer.AreaSelectorStyle>
<Style TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="10" />
<Setter Property="Background" Value="Red"/>
</Style>
</cc:DrawingLayer.AreaSelectorStyle>
但似乎没有应用这种风格。没有属性反映样式中的值。
有人可以指出我错过了什么吗?
答案 0 :(得分:1)
&#34; local&#34;
中指定的属性值<Border ... BorderBrush="#FF3399FF" BorderThickness="1" Background="#55ADD8E6" />
具有比Style Setters设置的值更高的优先级。
您需要为这些值设置默认样式。
请参阅MSDN上的Dependency Property Value Precedence。