グループと呼ばれるIList型のリストがあり、各グループにはアイテムと呼ばれる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(パンダ)
...
また、上記のスタイルは、さらなる補正が必要です。エキスパンダーのボーダー側を選択すると、選択されたイベントがトリガーされます。これは防止する必要があります。
私も同様の問題があります。私は年月と数ヶ月の間に刻んだ日付のコレクションを持っています。 IsExpandedプロパティがtrueに設定されている場合、日付全体のパスを展開することは可能ですか? –