我有一个类库,我在其中为TextBlock创建了默认样式,它应用于任何使用此类库的应用程序中的每个TextBlock。
问题是我有时需要在其他一些控件(比如功能区或我自己的自定义控件)中排除TextBlocks。文本块不可访问,例如标签项内的文本块。
有没有办法强制wpf在一个控件中为所有TextBlock使用另一种样式?
由于
答案 0 :(得分:1)
只需将空(或任何其他)样式添加到嵌套在引用资源字典的控件内的TextBlock
的任何祖先的资源字典中,其中定义了全局样式。例如,在这种情况下不会应用为TextBlock
定义的全局样式(如果资源字典由Button
控件的祖先引用):
<Button>
<Button.Resources>
<Style TargetType="TextBlock"/>
</Button.Resources>
<TextBlock Text="FooBar"/>
<Button>
答案 1 :(得分:1)
确定。事实证明,这是不可能的,请参阅Mike Strobel的答案,以解释原因及其背后的理性。
解决方法是不为TextBlock
创建隐式样式,因为它会影响其他TextBlock
内的ControlTemplate
。
对我来说有用的是从TextBlock
派生一个课程,比如Label
并将我的风格应用到它,然后在我希望TextBlock
具有该特定风格的任何地方使用它。
更多“Wpf Natural”处理方法是创建一个带键的样式。