WPF中TreeView使用时的注意事项

TreeView控件是wpf中非常强大的树形控件。典型的用法如下:

<TreeView ScrollViewer.VerticalScrollBarVisibility="Auto" ItemsSource="{Binding Models}"  VirtualizingStackPanel.IsVirtualizing="True",VirtualizingStackPanel.VirtualizationMode="Recycling">

<!--说明:VirtualizingStackPanel.IsVirtualizing和VirtualizingStackPanel.VirtualizationMode用于改善大数据量时的显示性能-->

    <TreeView.Resources>
              <HierarchicalDataTemplate DataType= "{x:Type vm:LeafVM}" ItemsSource = "{Binding Path=Children}">    
                     <TextBlock>
                                <Run Text="{Binding Name}"></Run>
                                <Run>[</Run>
                                <Run Text="{Binding Number}"></Run>
                                <Run>]</Run>
                     </TextBlock>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type vm:CompositeVM}" ItemsSource="{Binding Path=Children}">
                     <TextBlock>
                                <Run Text="{Binding Name}"></Run>
                                <Run>[</Run>
                                <Run Text="{Binding Number}"></Run>
                                <Run>]</Run>
                       </TextBlock>
            </HierarchicalDataTemplate>
            <Style TargetType="{x:Type TreeViewItem}">

                 <Setter Property="IsExpanded" Value="True" />

            </Style>
    </TreeView.Resources>

</TreeView>

如以上所述,在使用TreeView时需要注意一些事项:

(1)HierarchicalDataTemplate 中,DataType中一定要使用具体类,而不要使用接口,否则测试时可能会显示不出来。曾踩过坑。

(2)Style标签中的TargetType可以为TreeViewItem,是针对TreeViewItem来设置相关Property。

(3)HirarchicalDataTemplate中的ItemsSource是为下一级项目提供的数据源,而不是为本级显示项提供的数据源。


(4)对于数量量比较大的TreeView,显示的时候会非常慢,给TreeView添加两个属性 VirtualizingStackPanel.IsVirtualizing="True",VirtualizingStackPanel.VirtualizationMode="Recycling"后,改善非常明显,显示就比较快了。


猜你喜欢

转载自blog.csdn.net/jiuzaizuotian2014/article/details/80407146