有些款式在这里没有按预期工作。这是演示风格,它使背景为橙色,以证明它已应用于控件:
<Style x:Key="OrangeTestStyle" TargetType="TextBox">
<Setter Property="Background" Value="Orange"/>
</Style>
我通常可以像TextBox一样使用它,也可以使用从TextBox派生的我自己的类:
<TextBox Style="{StaticResource OrangeTestStyle}"/><!-- orange -->
<ui:UnitTextBox Style="{StaticResource OrangeTestStyle}"/><!-- orange -->
两者都有橙色背景。但如果它在DataTemplate中,它不适用于派生控件。实际上,根本没有明确设置样式应用于任何派生控件。标准框架控件工作得很好:
<DataTemplate>
<StackPanel>
<TextBox Style="{StaticResource OrangeTestStyle}"/><!-- orange -->
<ui:UnitTextBox Style="{StaticResource OrangeTestStyle}"/><!-- white -->
</StackPanel>
</DataTemplate>
我的派生控件不会覆盖与Style相关的任何内容。它只是添加了一个新的依赖属性,并在其他视觉元素中显示其内容,这是一种装饰。但它仍然直接来自TextBox。样式也可以在派生控件中使用,但如果在模板中则不行。样式也适用于模板,但不适用于派生控件。 (我的应用程序中有其他派生控件。)
这里的问题是什么?
.NET 4.0,Visual Studio 2010,Windows 7。
答案 0 :(得分:1)
从SetResourceReference(StyleProperty, typeof(TextBox))
构造函数中删除UnitTextBox
应该修复它。