Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF根据选择突出显示树状视图中的多个节点/叶_Wpf_Treeview - Fatal编程技术网

WPF根据选择突出显示树状视图中的多个节点/叶

WPF根据选择突出显示树状视图中的多个节点/叶,wpf,treeview,Wpf,Treeview,我有一个绑定的、分层的TreeView。根据基础数据的性质,同一对象可能会在树中出现多次: A --A1 ---A11 --A2 B --B1 --A1 <<< A1 is a node under both A and B ---A11 <<< A11 also shows up twice since it is a child of A1 A --A1 ---A11 --A2 B --B1 --A1我坚持使用具有两个特性的模型:

我有一个绑定的、分层的
TreeView
。根据基础数据的性质,同一对象可能会在树中出现多次:

A
--A1
  ---A11
--A2
B
--B1
--A1      <<< A1 is a node under both A and B
  ---A11  <<< A11 also shows up twice since it is a child of A1
A
--A1
---A11
--A2
B
--B1

--A1我坚持使用具有两个特性的模型:

  • 名字
  • 石灯
原因如下:


您所讨论的逻辑本质上是视图逻辑,但它并不决定视图如何显示数据;相反,它只表示视图显示的内容。因此,它应该位于视图模型中。视图模型是不可知的-这意味着它们没有视图对象(例如Listview、按钮等),但它们是视图的对象表示形式(也称为视图的模型)。

一个选项是将视图模型集合/树投影到同一形状的视图专用树中,其中每个节点都有一个对
VMNode
的引用和一个
ishighlight
标志。引用同一VMNode的两个ViewNode本身必须是重复的。就我个人而言,我将简要考虑我在这个世界上分配的有限的时间跨度,并使用你所得到的解决方案。你指的是什么项目?我的意思是根据现有的项目创建一个新的集合。对不起,我对那些行话不感兴趣,但想不出更好的词了。你说的很有道理。我可能需要在View和ViewModel之间做一个更清晰的描述,两者现在并不是很分开(正如我所说,根本不是一个严格的MVVM实现)。所以我的解决方案是把东西推到模型上。我认为,如果我能更恰当地构建视图和视图模型,那么您关于在视图模型上保留高亮显示控件的建议是有意义的,并阻止它向下迁移到模型。我会尽可能地保持您的模型的轻量级。是否将验证逻辑放在其中还有争议。我通常只放与模型本身相关的逻辑。例如: