1

我在 WPF 中的 DataTemplates 上使用 Styles 时遇到问题……它看起来很糟糕。假设您定义了一个 DataTemplate:

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

现在有什么方法可以动态设置这个元素的样式吗?(例如更改应用程序某些部分的背景颜色)我的问题是:

  • 如果您在某些父控件中设置样式,它会被忽略,因为数据模板中已经存在样式
  • 如果您在父控件上设置属性,它不会被继承,因为样式优先于属性继承

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

4

1 回答 1

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>

新风格将适用于那里。

于 2013-01-14T09:54:18.043 回答