我有一个包含各种项目的 TreeView。项目的样式使得 IsSelected 属性绑定到我的 VM 到布尔 IsSelected。
每当我单击树视图项时,都会调用此 VM 属性两次,首先是 value==false,然后是 value==true。
我认为这是一种正常行为,但我不确定为什么,因为我以相同的方式绑定了 IsExpended 属性,并且只调用了一次。
谢谢
我有一个包含各种项目的 TreeView。项目的样式使得 IsSelected 属性绑定到我的 VM 到布尔 IsSelected。
每当我单击树视图项时,都会调用此 VM 属性两次,首先是 value==false,然后是 value==true。
我认为这是一种正常行为,但我不确定为什么,因为我以相同的方式绑定了 IsExpended 属性,并且只调用了一次。
谢谢
我怀疑原因是当您选择一个项目时,首先取消选择旧项目,然后选择新项目。这导致第一次调用 false,第二次调用 true。
也许在调试时,检查视图模型上的 DisplayName 或类似属性,以查看每次修改了哪些项目,看看是否确实如此。
同样,当您展开一个节点时,不需要折叠任何其他节点。因此,它只是扩展您尝试扩展的节点(为 IsExpanded 传递 true)。
其原因是冒泡事件。
当一个事件被引发时,它会“冒泡”直到它被处理。
您可以通过选择第三级项目来验证它。
你只需要设置e.Handled = true
;
奥菲尔