wpf- treeviewitem.loadedイベントをトリガーしたtreeviewitemを取得するにはどうすればよいですか?

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

  •  02-10-2019
  •  | 
  •  

質問

私はそれぞれにいくつかのハンドラーを添付しようとしています TreeViewItem ロードされたときに、ハンドラーがアンロードされたときに取り外します。

これが私がカスタムコントロールに持っているコードです。 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));
    }

編集:

私はまだ何が起こっているのか理解できません。それはただ拾っているようです TreeView の代わりにロードされたイベント TreeViewItem ロードされたイベント。

役に立ちましたか?

解決 2

どうやらtreeviewitem.loadedイベントは直接イベントです。ですから、私がしようとしていたことを達成する方法はありません。

他のヒント

ロードされたものはルーティングされたイベントなので、そのソースがあります OriginalSource プロパティは、イベントをトリガーしたTreeViewitemである必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top