Wpf- Comment puis-je obtenir le TreeViewItem qui a déclenché l'événement TreeViewItem.Loaded?

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

  •  02-10-2019
  •  | 
  •  

Question

Je suis en train d'attacher des gestionnaires à chaque TreeViewItem car ils sont chargés, puis retirez les gestionnaires qu'ils sont déchargés.

Voici le code que j'ai dans mon contrôle personnalisé qui hérite 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));
    }

Modifier

Je ne peux toujours pas comprendre ce qui se passe. Il semble juste être ramasser l'événement chargé de TreeView au lieu de l'événement chargé de TreeViewItem.

Était-ce utile?

La solution 2

Apparemment, l'événement est un événement TreeViewItem.Loaded direct. Donc, il n'y a aucun moyen d'accomplir ce que je cherchais.

Autres conseils

Loaded est un événement routé, vous trouverez sa source dans la propriété OriginalSource, qui devrait être le TreeViewItem qui a déclenché l'événement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top