WPF,更改ControlTemplate内元素的样式
我想知道WPF是否提供了一种方法,可以将ControlTemplate中定义的命名元素的样式从其他地方声明的样式更改为其他样式,如下面的示例所示WPF,更改ControlTemplate内元素的样式,wpf,xaml,Wpf,Xaml,我想知道WPF是否提供了一种方法,可以将ControlTemplate中定义的命名元素的样式从其他地方声明的样式更改为其他样式,如下面的示例所示 让我们使用名为«MyTextBlock»的文本块重新定义标签的ControlTemplate 让我们继承以前定义的标签的样式 问候 我想知道WPF是否提供了一种方法来更改ControlTemplate中定义的命名元素的样式,而不是其他地方声明的样式 简短回答:没有 您不能直接访问或设置元素(TextBlock)的属性,但可以设置绑定到模板中元素
问候
我想知道WPF是否提供了一种方法来更改ControlTemplate中定义的命名元素的样式,而不是其他地方声明的样式
简短回答:没有
您不能直接访问或设置元素(TextBlock
)的属性,但可以设置绑定到模板中元素的样式控件(Label
)的属性,例如:
<Style x:Key="MyLabel" TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock x:Name="MyTextBlock" Foreground="{TemplateBinding Foreground}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="MyNewLabel" TargetType="Label" BasedOn="{StaticResource MyLabel}">
<Setter Property="Foreground" Value="Red" />
</Style>
谢谢mm8。根据我的实际需要,样式不依赖于现有属性,如我在示例中使用的前台属性。。。我知道我还可以添加一些额外的依赖属性,但我的问题是是否有可能覆盖某些命名部件的样式。因此,我可能会接受你的简短回答。是的,恐怕你无法覆盖某些命名部件的样式。
<Style x:Key="MyNewLabel" BasedOn="{StaticResource MyLabel}">
<Setter Property="{Binding {[SOME.EXPRESSION.TO.REACH.MyTextBlock???]}, Path=Foreground}" Value="Red" />
</Style>
<Style x:Key="MyLabel" TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock x:Name="MyTextBlock" Foreground="{TemplateBinding Foreground}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="MyNewLabel" TargetType="Label" BasedOn="{StaticResource MyLabel}">
<Setter Property="Foreground" Value="Red" />
</Style>