wpf- treeviewitem.loadedイベントをトリガーしたtreeviewitemを取得するにはどうすればよいですか?
-
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である必要があります。
所属していません StackOverflow