WPF- كيف يمكنني الحصول على TreeViewItem الذي أدى إلى حدث TreeViewitem.loaded؟
-
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