wpf-如何获得触发treeViewItem的treeViewItem。加载事件?
-
02-10-2019 - |
题
我试图将一些处理程序附加到每个处理程序 TreeViewItem
当它们被加载时,然后在卸载时卸下处理程序。
这是我在自定义控件中拥有的代码,该代码继承了 TreeView
:
public ModdedTreeView()
{
this.AddHandler(TreeViewItem.LoadedEvent, new RoutedEventHandler(ItemLoaded));
this.AddHandler(TreeViewItem.UnloadedEvent, new RoutedEventHandler(ItemUnloaded));
}
protected void ItemLoaded(object sender, RoutedEventArgs e)
{
TreeViewItem item = e.OriginalSource as TreeViewItem;
if (item == null)
return;
item.AddHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));
item.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(ItemExpanded));
item.AddHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(ItemSelected));
}
protected void ItemUnloaded(object sender, RoutedEventArgs e)
{
TreeViewItem item = e.OriginalSource as TreeViewItem;
if (item == null)
return;
item.RemoveHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));
item.RemoveHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(ItemExpanded));
item.RemoveHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(ItemSelected));
}
编辑:
我仍然无法弄清楚发生了什么。似乎正在捡起 TreeView
已加载事件而不是 TreeViewItem
已加载事件。
解决方案 2
显然,TreeViewItem.Poaded事件是一个直接事件。因此,没有办法完成我的尝试。
其他提示
加载是一个路由事件,因此您将在 OriginalSource
属性,应该是触发事件的TreeViewItem。
不隶属于 StackOverflow