Josh Smith写了一篇关于在WPF中使用TreeView控件的简明扼要的旅程。成功的秘诀在于将viewmodel的IsExpanded和IsSelected属性绑定到treeviewitems。论文是here。
然而,在尝试将他的方法映射到Silverlight Toolkit TreeView一天之后,我开始怀疑它是不可能的。
我首先偶然发现IsExpanded的绑定问题,直到我遇到the suggestion使用附加DependencyProperty
上的setter。这看起来很有希望,但仍然无效。
看起来TreeView控件与WPF和Silverlight工具包之间存在一些根本区别;这种差异否定了从视图模型中驱动视图的可能性,就像Josh在他的精彩例子中所做的那样。搜索viewmodel数据并级联更新IsExpanded = true,层次结构对于WPF中的Josh非常有用,但在Silverlight中对我来说并不是那么多。
实际上可以1)在viewmodel对象的层次结构中找到一个节点,然后将该节点的所有IsExpanded属性设置为root,并将其反映在绑定视图中吗?
(我们正在使用MVVM-light,如果这是一个帮助)