WPF MaterailDesign TreeView节点默认全部展开

tech2025-07-24  7

加载TreeView后默认节点全部折叠; 

<TreeView x:Name="treeView" Grid.Row="0" Foreground="White" ItemsSource="{Binding NavMenus}" MinWidth="220"> <TreeView.Resources> <HierarchicalDataTemplate DataType="{x:Type domain:NavMenuModel}" ItemsSource="{Binding ChildMenus}"> <TextBlock Text="{Binding MenuName}" Margin="3 2" /> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type domain:MenuModel}"> <TextBlock Text="{Binding MenuName}" Margin="3 2"/> </DataTemplate> </TreeView.Resources> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectedItemChanged"> <i:InvokeCommandAction Command="{Binding SelectItemChangeCommand}" CommandParameter="{Binding ElementName=treeView,Path=SelectedItem}"/> </i:EventTrigger> </i:Interaction.Triggers> </TreeView>

如果写上

 <TreeView.ItemContainerStyle>                         <Style TargetType="{x:Type TreeViewItem}">                             <Setter Property="IsExpanded" Value="{Binding IsExpanded,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>                             <Setter Property="IsSelected" Value="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>                         </Style>                     </TreeView.ItemContainerStyle>

则MaterialDesign 的样式失效了,如何解决这个问题呢?

想到了样式的“继承”:

<UserControl.Resources> <Style TargetType="TreeViewItem" BasedOn="{StaticResource MaterialDesignTreeViewItem}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/> <Setter Property="IsSelected" Value="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/> </Style> </UserControl.Resources>

 

最新回复(0)