.NET TreeViewItem 仅在选择自身而不是其子项时才选择?

.NET TreeViewItem Selected only when itself is selected, not its child?

目前,我有一个如下所示的树视图:

+Country
  +StateA
    -CityA
    -CityB
  +StateB
    -CityC
  +State
    -CityD

其中城市是树的末端叶子,并且 select 可用并且有自己的 Selected 处理程序。该国家/地区也 select 能够并拥有自己的 Selected 处理程序。

处理程序分配如下:

countryTreeItem.Selected += countrySelectedHandler;
...
cityTreeItem.Selected += citySelectedHandler;

当我 select 一个城市时,父州和父国家也被 select 编辑。这意味着当我 select 一片叶子时 citySelectedHandlercountrySelectedHandler 都被 selected(比如说,City A

有没有办法确保只有叶项得到 selected?如果我单击 CityA,我只希望该城市的 citySelectedHandler 变为 运行,而不是其祖先的 countrySelectedHandler 也变为 运行。

但是,当 select 编辑(点击)国家/地区时,我仍然希望 countrySelectedHandler 到 运行。简单地删除祖先的处理程序是行不通的。

谢谢!

要停止传播事件,您可以设置e.Handled = true。这样事件就不会冒泡到祖先树项目。