WPF- Wie kann ich die TreeViewItem bekommen, die das TreeViewItem.Loaded Ereignis ausgelöst?

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

  •  02-10-2019
  •  | 
  •  

Frage

Ich versuche, einige Handler jeden TreeViewItem zu befestigen, wie sie geladen werden und dann die Handler entfernen, da sie entladen werden.

Hier ist der Code, den ich in meiner benutzerdefinierten Kontrolle haben, die erbt von 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:

Ich kann immer noch nicht herausfinden, was los ist. Es scheint nur die TreeView geladen Ereignis statt des TreeViewItem geladen Ereignis werden Aufnehmen.

War es hilfreich?

Lösung 2

Anscheinend ist die TreeViewItem.Loaded Veranstaltung ist ein direktes Ereignis. So gibt es keine Möglichkeit, zu erreichen, was ich versuche.

Andere Tipps

Aufgebaut ist ein Routingereignis, so dass man seine Quelle in der OriginalSource Eigenschaft finden, die den TreeViewItem sein sollten, die das Ereignis ausgelöst hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top