Josh Smith有一篇关于CodeProject的文章,其中解释了如何将TreeView与ViewModels一起使用。Simplifying the WPF TreeView by Using the ViewModel Pattern 该示例的关键部分显示了如何在ViewModel中绑定IsExpanded和IsSelected属性。 因此,如果所有ViewModel都具有IsExpanded和IsSelected属性,则可以通过将ViewModel的IsExpanded属性设置为true来展开特定节点。
4条答案
按热度按时间mqkwyuun1#
我能做到这一点的最简单的方法是使用样式(您可以将所有内容保留在XAML中,并且不需要任何特殊的MVVM属性)。您可以在实际TreeView元素上设置顶级ItemContainerStyle,以设置根TreeViewItem的样式并将其显示为展开的。然后,将HierarchicalDataTemplate元素上的ItemContainerStyle设置为其他级别上所有节点的默认TreeViewItem样式。BasedOn属性将使继承整个TreeViewItem样式和仅更改IsExpanded属性变得容易。
主TreeView XAML:
您的基本TreeViewItem样式:
根TreeViewItem样式:
zz2j4svz2#
Josh Smith有一篇关于CodeProject的文章,其中解释了如何将TreeView与ViewModels一起使用。Simplifying the WPF TreeView by Using the ViewModel Pattern
该示例的关键部分显示了如何在ViewModel中绑定IsExpanded和IsSelected属性。
因此,如果所有ViewModel都具有IsExpanded和IsSelected属性,则可以通过将ViewModel的IsExpanded属性设置为true来展开特定节点。
bweufnob3#
如果你使用Silverlight,这里有一个区别,除了Josh Smith的文章,你还需要看看大卫安森的博客中解释的SetterValueBindingHelper。
lrl1mhuk4#
要展开根节点,需要设置树视图本身的ItemContainerStyle,这意味着在树视图之外定义样式。