Wpf- Come posso ottenere l'TreeViewItem che ha attivato l'evento TreeViewItem.Loaded?
-
02-10-2019 - |
Domanda
Sto cercando di collegare alcuni gestori a ogni TreeViewItem
come essi vengono caricati e quindi rimuovere i gestori di come vengono scaricati.
Ecco il codice che ho nel mio controllo personalizzato che eredita da 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));
}
Modifica
Non riesco ancora a capire cosa sta succedendo. E 'solo sembra essere raccogliendo la TreeView
caricato evento anziché l'TreeViewItem
caricata evento.
Soluzione 2
A quanto pare l'evento TreeViewItem.Loaded è un evento diretto. Quindi non v'è alcun modo per ottenere quello che stavo cercando.
Altri suggerimenti
Loaded è un evento indirizzato, in modo da trovare la sua fonte nella proprietà OriginalSource
, che dovrebbe essere il TreeViewItem che ha attivato l'evento.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow