[英]Wpf- How can I get the TreeViewItem that triggered the TreeViewItem.Loaded event?
I am trying to attach some handlers to each TreeViewItem
as they are loaded and then remove the handlers as they are unloaded. 我试图在每个
TreeViewItem
加载时附加一些处理程序,然后在卸载时删除这些处理程序。
Here is the Code that I have in my custom control which inherits from TreeView
: 这是我从
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));
}
Edit: 编辑:
I still can not figure out what is going on. 我仍然不知道发生了什么。 It just seems to be picking up the
TreeView
loaded event instead of the TreeViewItem
loaded event. 它似乎只是在拾取
TreeView
加载的事件,而不是TreeViewItem
加载的事件。
加载是一个路由事件,因此您可以在OriginalSource
属性中找到其源,该属性应该是触发该事件的treeviewitem。
Apparently the TreeViewItem.Loaded event is a direct event. 显然TreeViewItem.Loaded事件是直接事件。 So there is no way to accomplish what I was trying.
因此,没有办法完成我所尝试的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.