样式未通过 Style 属性 绑定应用于内部元素
Style not being applied to inner element via Style property binding
我有一个由很多部分组成的自定义控件。
其中一个部分是 Border
.
我需要从控件外部设置边框的样式,所以我创建了一个 Style 类型的依赖项 属性 并将其绑定到边框,如下所示:
<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>
在我使用控件的 window 中,我尝试以这种方式定义其样式:
<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>
但是好像没有应用样式。否 属性 反映样式中的值。
有人能指出我遗漏了什么吗?
"local" 属性 中分配的值
<Border ... BorderBrush="#FF3399FF" BorderThickness="1" Background="#55ADD8E6" />
优先级高于 Style Setters 设置的值。
您需要为这些值设置默认样式。
请参阅 MSDN 上的 Dependency Property Value Precedence。
我有一个由很多部分组成的自定义控件。
其中一个部分是 Border
.
我需要从控件外部设置边框的样式,所以我创建了一个 Style 类型的依赖项 属性 并将其绑定到边框,如下所示:
<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>
在我使用控件的 window 中,我尝试以这种方式定义其样式:
<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>
但是好像没有应用样式。否 属性 反映样式中的值。
有人能指出我遗漏了什么吗?
"local" 属性 中分配的值
<Border ... BorderBrush="#FF3399FF" BorderThickness="1" Background="#55ADD8E6" />
优先级高于 Style Setters 设置的值。
您需要为这些值设置默认样式。
请参阅 MSDN 上的 Dependency Property Value Precedence。