样式未通过Style属性绑定应用于内部元素

时间:2016-09-01 09:31:04

标签: c# wpf custom-controls

我有一个由许多部分组成的自定义控件。 其中一个部分是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>

但似乎没有应用这种风格。没有属性反映样式中的值。

有人可以指出我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

&#34; local&#34;

中指定的属性值
<Border ... BorderBrush="#FF3399FF" BorderThickness="1" Background="#55ADD8E6" />

具有比Style Setters设置的值更高的优先级。

您需要为这些值设置默认样式。

请参阅MSDN上的Dependency Property Value Precedence