如何在不丢失全局样式集的情况下使用StyleSelector?

时间:2012-05-17 16:47:48

标签: wpf xaml wpf-controls telerik

假设我为ItemsContainer控件设置了一个全局样式,并且这个样式在运行时很好地应用。现在我需要根据某些条件为每一行绘制行背景。为此,我决定使用RowStyleSelector。

<RadTreeListView RowStyleSelector="{StaticResource ActivityRowStyleSelector}" />

<Style x:Key="xxxTreeListViewStyle" TargetType="telerik:TreeListViewRow">
    <Setter Property="Background" Value="#FFFFE1C4" />
</Style>

<local:xxxRowStyleSelector x:Key="xxxRowStyleSelector"
                           FailureStyle="{StaticResource xxxTreeListViewStyle}"
                           .../>

但是这会覆盖我为行设置的全局样式,我只想将Background属性更改为现有样式。

另一个问题是:我如何将此更改应用于特定单元格,而不是行?

1 个答案:

答案 0 :(得分:0)

您可以使用Style.BasedOn属性从一个样式“继承”另一个样式。像这样使用它(其中RowGlobalStyle是您之前创建的全局样式的名称):

<Style x:Key="xxxTreeListViewStyle" TargetType="telerik:TreeListViewRow"
    BasedOn="{StaticResource RowGlobalStyle}">
    <Setter Property="Background" Value="#FFFFE1C4" />
</Style>