2016-02-25 57 views
0

某些样式在此处无法按预期工作。这是在演示的风格,它使背景橙色,证明它已经应用于控制:对于DataTemplate中的派生控件忽略显式样式

<Style x:Key="OrangeTestStyle" TargetType="TextBox"> 
    <Setter Property="Background" Value="Orange"/> 
</Style> 

我可以这样使用它只是正常的文本框,并从文本框派生我自己的类:

<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

对不起编辑我的关闭,没有阅读最后的第一部分。什么是“单位文本框”的样子? –

+0

以下是该文件:https://gist.github.com/dg9ngf/1a5285edef5680af3191 – ygoe

回答

1

UnitTextBox构造应该修复它卸下SetResourceReference(StyleProperty, typeof(TextBox))