如何使TreeViewItem不可折叠

时间:2012-08-27 20:32:47

标签: wpf xaml treeview treeviewitem

我正在开发一个WPF项目,我使用TreeView HierarchicalDataTemplates。我已经能够建立一些不同级别的节点。到目前为止,一切进展顺利。

<TreeView Margin="14,14,14,14" Name="treeView" ItemsSource="{Binding Tree}"
                               BorderThickness="0">
                  <TreeView.Resources>
                    <!--
                        First Level
                    -->
                    <HierarchicalDataTemplate DataType="{x:Type vm:FirstLevelViewModel}" 
                                              ItemsSource="{Binding Children}" >
                        <StackPanel Orientation="Horizontal" >
                        <TextBlock Text="{Binding SomeText}" FontSize="14" FontWeight="Bold" Foreground="DarkBlue"  />
                        </StackPanel>                           
                    </HierarchicalDataTemplate>
                    <!--
                        Second Level
                    -->
                    <HierarchicalDataTemplate DataType="{x:Type vm:SecondLevelViewModel}" 
                                              ItemsSource="{Binding Children}" >
                            <CheckBox Name="checkBox" IsChecked="{Binding IsChecked}" IsEnabled="{Binding IsEnabled}">
                            <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding SomeText}" FontSize="14" />
                            </StackPanel>
                        </CheckBox>
                    </HierarchicalDataTemplate>
. . . . 

我的问题是:我需要一些节点不可折叠。

有没有办法实现这一目标?我一直在寻找它没有运气。

1 个答案:

答案 0 :(得分:2)

TreeViewItem的{​​{3}}定义了显示和隐藏子项的ToggleButton。您可以基于IsEnabled属性绑定到项目上某个属性的模板来创建自己的模板,以便可以防止它被切换,当然您也应该绑定IsExpanded(也可以在模板外部完成),在这种情况下,值应始终为true