2013-02-25 58 views
0

如何扩展我在CustomTreeView中声明的样式?所以我有一个浅灰色的前景和一个绿色的背景?扩展自定义TreeView itemcontainers风格?

CustomTreeView.xaml

<TreeView x:Class="WpfApplication17.CustomTreeView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="Foreground" Value="LightGray"/> 
     </Style> 
    </TreeView.ItemContainerStyle> 
</TreeView> 

Window.xaml

<Window x:Class="WpfApplication17.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication17"> 
    <local:CustomTreeView ItemsSource="{Binding Data}"> 
     <local:CustomTreeView.ItemContainerStyle> 
      <Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}"> 
       <Setter Property="Background" Value="Green"/> 
      </Style> 
     </local:CustomTreeView.ItemContainerStyle> 
    </local:CustomTreeView> 
</Window> 

回答

0

不知道这是正确的做法,但我最终使用它。

<TreeView x:Class="WpfApplication17.CustomTreeView" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
     <TreeView.Resources> 
      <Style x:Key="m_itemContainerStyle" TargetType="{x:Type TreeViewItem}"> 
       <Setter Property="Foreground" Value="LightGray"/> 
      </Style> 
     </TreeView.Resources> 

     <TreeView.ItemContainerStyle> 
      <Style BasedOn="{StaticResource m_itemContainerStyle}" TargetType="{x:Type TreeViewItem}"> 

      </Style> 
     </TreeView.ItemContainerStyle> 
    </TreeView> 


    <Window x:Class="WpfApplication17.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="clr-namespace:WpfApplication17"> 
     <local:CustomTreeView ItemsSource="{Binding Data}"> 
      <local:CustomTreeView.ItemContainerStyle> 
       <Style BasedOn="{StaticResource m_itemContainerStyle}" TargetType="{x:Type TreeViewItem}"> 
        <Setter Property="Background" Value="Green"/> 
       </Style> 
      </local:CustomTreeView.ItemContainerStyle> 
     </local:CustomTreeView> 
    </Window>