对于使用此模板的自定义控件,我有这种通用样式。
<Style TargetType="{x:Type local:MyType}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyType}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<local:MyControl />
</Border>
...
如果在这个样式全局设置的项目中使用此控件:
<Style TargetType="{x:Type Border}">
<Setter Property="Padding" Value="3" />
<Setter Property="VerticalAlignment" Value="Top" />
</Style>
但是MyControl是一个普通的UserControl
,包含:
...
<Border .. />
然后UserControl中的Border(驻留在Template中)也继承了这个样式(Padding 3等)
是否有任何方法可以说ControlTemplate中的控件不会阻止这些全局样式?
提一下。这是一个通用模板
答案 0 :(得分:1)
不确定我是否理解正确。 有些解决方法,因为我有类似的情况,我的所有控件的样式全局指定并自动继承而没有x:key。
我必须删除某些控件的样式,并为某些控件应用不同的样式。
在那种情况下,我创建了单独的样式(例如,想要删除样式),因此只需创建空样式并在任何地方使用,并且可以控制它。
空格:
<Grid.Resources>
<ResourceDictionary>
<Style x:Key="EmptyStyle"/>
</ResourceDictionary>
</Grid.Resources>
申请控制权:
<TextBlock Text="First Name" Style="{StaticResource EmptyStyle}" />
答案 1 :(得分:0)
你可以将你的Style放在带有x:Key的资源字典中,我总是这样做,只有在我指定控件上的键时才应用我的样式。