设置自定义样式后,默认样式丢失(例如颜色)

时间:2017-08-11 05:53:16

标签: c# wpf xaml telerik treeview

我使用来自telerik的RadTreeView来显示带有节点的树。要将IsExpanded属性绑定到我自己的IsExpanded属性,请使用以下代码段:

<Style TargetType="{x:Type telerik:RadTreeViewItem}" x:Key="ItemContainerStyle"  >
    <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded,Mode=TwoWay}"/>
</Style>

到目前为止,此工作正常,但节点的高亮颜色从蓝色变为灰色。如何保留原始样式并仅添加setter属性?

编辑:

我使用telerik Windows8Theme并调整Windows8Palette。 在XAML中添加提到的样式元素之前,所选元素的颜色是Windows8Palette的AccentColor(蓝色)。添加样式元素后,似乎使用了Windows8Palette的BasicColor(灰色)。我不知道到底发生了什么,但比较RGB值显示了这个颜色开关。

2 个答案:

答案 0 :(得分:0)

应该是:

<Style x:Key="ItemContainerStyle" TargetType="{x:Type telerik:RadTreeViewItem}" BasedOn="{StaticResource {x:Type telerik:RadTreeViewItem}}">
    <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded,Mode=TwoWay}"/>
</Style>

...如果您想将自定义样式基于默认样式。

答案 1 :(得分:0)

我终于得到了答案。我从另一个组件覆盖了我们的自定义样式。这有效:

<telerik:radGridView.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/OtherAssembly,component/existingStyles.xaml />
    </ResourceDictionary.MergedDictionaries>
    <Style BasedOn="{StaticResource xKeyOfStyleToExtendFromExistingStyles}" TargetType="{x:Type telerik:RadTreeViewItem}">
        <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
    </Style>
  </ResourceDictionary>
</telerik:radGridView.Resources>