TreeView (System.Windows.Controls.TreeView) の WPF バージョンを使用しており、いくつかのイベントを割り当てる必要があります。これらはWPFであるため、ほとんどのイベントは異なるか、異なる方法で動作するため、AfterExpandが利用できないため混乱しています
今のところ、2 つのイベントが必要です。
TreeView レベルにある SelectedItemChanged TreeViewItem レベルにある ExpandedEvent
これまでのところ、
private void DisplayGetEventTypes(UXEvent.GetEventTypesResp resp, CustomAsyncStateContainer state)
{
navBarControl.Groups.Clear();
if (resp.eventTypeItems != null)
{
UXEvent.EventType[] eventItems = resp.eventTypeItems;
int nodeCount = eventItems.Length;
for (int i = 0; i < nodeCount; i++)
{
UXEvent.TryEvent eventItem = new UXEvent.TryEvent();
eventItem.eventName = eventItems[i].name;
eventItem.eventId = eventItems[i].id;
NavBarGroup group1 = new NavBarGroup();
group1.Header = eventItems[i].name;
group1.Tag = eventItem;
group1.IsExpanded = false;
//Add dummy treeview to fill later if expanded
System.Windows.Controls.TreeView treeview = new System.Windows.Controls.TreeView();
treeview.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(myTreeView_SelectedItemChanged);
AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(myTreeView_ItemExpanded));
group1.Content = treeview;
group1.DisplaySource = DisplaySource.Content;
navBarControl.Groups.Add(group1);
}
}
}
テスト用の次の 2 つのドラフト イベント ハンドラー
void myTreeView_SelectedItemChanged(object sender,
RoutedPropertyChangedEventArgs<object> e)
{
// Set the data context of the text block to the selected value.
var node = (ItemsControl)e.OriginalSource;
System.Windows.Forms.MessageBox.Show("Selected!");
}
void myTreeView_ItemExpanded(object sender, RoutedEventArgs e)
{
// Set the data context of the text block to the selected value.
var node = (TreeViewItem)e.OriginalSource;
System.Windows.Forms.MessageBox.Show("Opening! - " + node.Header);
}
私が抱えている問題はmyTreeView_ItemExpanded
、treeviewItem が展開されたときに複数回発生することです。イベントのバブリングにより、複数回発火すると思います。
まず、この動作について読むことができるいくつかの優れたリソースを誰かに教えてもらえますか?
AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(myTreeView_ItemExpanded));
次に、単一のイベントのみを作成するようにコードを修正するにはどうすればよいですか?
ありがとうございました