DataTemplates上的样式

时间:2013-01-14 09:40:15

标签: wpf styles datatemplate

我在WPF中使用DataTemplates上的样式时出现问题...看起来很糟糕。假设您定义了一个DataTemplate:

<DataTemplate DataType="{x:Type local:DataSource}">
    <TextBox Style="{StaticResource TextBoxStyle}" Text="{Binding Path=myData}"  />
</DataTemplate>

现在有没有办法动态调整此元素的样式? (例如,在应用程序的某些部分更改背景颜色)我的问题是:

  • 如果您在某个父控件中设置样式,则会被忽略,因为datatemplate中已存在样式
  • 如果在父控件上设置属性,则不会继承它,因为样式优先于属性继承

有没有人看到这样做的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用DynamicResource

进行尝试
<DataTemplate DataType="{x:Type local:DataSource}">
        <TextBox Style="{DynamicResource TextBoxStyle}" Text="{Binding Path=myData}"  />
</DataTemplate>

然后如果您需要更改任何其他控件中的样式。您可以使用该控件的相同键声明相同的资源。假设您在ListBox中使用它。

 <ListBox>
        <ListBox.Resources>
            <Style x:Key="TextBoxStyle" TargetType="TextBox">
               <!--define changed style.-->
            </Style>
        </ListBox.Resources>
    </ListBox>

新风格将适用于那里。