不同级别的WPF树视图的样式不同?

时间:2009-08-13 13:52:57

标签: wpf mvvm treeview styling

我有一个非常扁平结构的树视图,只有两个级别的项目 - 主要项目和一个子项目级别。我正在使用WPF MVVM,并希望以不同的方式设置两个级别的样式,但不知道如何。

我将树视图绑定到我的ViewModel中的ObservableCollection,并且每个元素还有一个ObservableCollection用于下一个级别。

任何帮助?

1 个答案:

答案 0 :(得分:7)

这可以通过DATABINDING和使用DATATEMPLATES来完成。

您将设计两个DataTemplates。 1作为Hierarchical DataTemplate,另一个作为较低级别的标准版本(这是因为您只使用了2个级别)

然后将HierarchicalDataTemplate的ItemTemplate设置为常规DataTemplate

详情请见:http://msdn.microsoft.com/en-us/magazine/cc700358.aspx

以上网站的代码段:

 <!-- ORDER DETAIL TEMPLATE -->
    <DataTemplate x:Key="OrderDetailTemplate">
      <TextBlock>
        <Run>Product:</Run>
        <TextBlock Text="{Binding Path=Product}" />
        <Run>(</Run>
        <TextBlock Text="{Binding Path=Quantity}" />
        <Run>)</Run>
      </TextBlock>
    </DataTemplate>

    <!-- ORDER TEMPLATE -->
    <HierarchicalDataTemplate 
      x:Key="OrderTemplate"
      ItemsSource="{Binding Path=OrderDetails}"
      ItemTemplate="{StaticResource OrderDetailTemplate}"
      >
      <TextBlock Text="{Binding Path=Desc}" />
    </HierarchicalDataTemplate>