Wpf- ¿Cómo puedo obtener el TreeViewItem que desencadenó el evento TreeViewItem.Loaded?

StackOverflow https://stackoverflow.com/questions/3597720

  •  02-10-2019
  •  | 
  •  

Pregunta

Estoy intentando conectar algunos manipuladores a cada TreeViewItem medida que se cargan y luego quitar los controladores, ya que se descargan.

Este es el código que tengo en mi control personalizado que hereda de 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));
    }

Editar

Yo todavía no puede averiguar lo que está pasando. Sólo parece estar recogiendo el evento TreeView cargado en lugar del evento TreeViewItem cargado.

¿Fue útil?

Solución 2

Al parecer, el evento es un evento TreeViewItem.Loaded directa. Así que no hay manera de lograr lo que estaba tratando.

Otros consejos

Loaded es un evento enrutado, lo que se encuentra su fuente en la propiedad OriginalSource, que debe ser el TreeViewItem que desencadenó el evento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top