我有一個稱爲組的IList類型的列表,每個組都有一個名爲Items的IList子列表。 Group和Item都具有名爲Name的屬性。要顯示這個層次結構,我使用了一個TreeView。WPF TreeView - 組節點樣式
我想在層次結構中顯示每個組作爲擴展器,但它不顯示爲我想要的。
到目前爲止,我的XAML:
<DataTemplate x:Key="NavItemTemplate">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
<HierarchicalDataTemplate x:Key="NavGroupTemplate" ItemsSource="{Binding Items}" ItemTemplate="{StaticResource NavItemTemplate}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<Style x:Key="RootItemStyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<Grid>
<Expander x:Name="Exp" TextElement.FontWeight="Bold" IsExpanded="{TemplateBinding TreeViewItem.IsExpanded}">
<Expander.Header>
<ContentPresenter x:Name="ExpCP" ContentSource="Header"/>
</Expander.Header>
<ItemsPresenter/>
</Expander>
<Border x:Name="CP" Padding="25,0,0,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Visibility="Collapsed">
<ContentPresenter ContentSource="Header" HorizontalAlignment="Left" VerticalAlignment="Center" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
<Setter TargetName="Exp" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="CP" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource NavGroupTemplate}" ItemContainerStyle="{StaticResource RootItemStyle}">
上面的樣式
的作品:
組別1(擴展)
- 項目1
組2(擴展)
...
但對(目標)不工作:
組別1(擴展)
項目1
- 的SubItem1
組2(擴展)
...
而且上面的樣式還需要進一步修正。當我選擇擴展器邊界時,它會觸發一個應該被阻止的selecteditem事件。
我有類似的問題。我收集按年份和月份分組的日期。 IsExpanded屬性設置爲true時,是否可以將整個路徑擴展到日期? –