我正在使用WPF版本的TreeView(System.Windows.Controls.TreeView)并需要分配几个事件。由于这是WPF的大部分事件是不同或以不同的方式表现,因此我的混乱AfterExpand不可TreeView事件不断发射
现在我需要2个事件:
SelectedItemChanged这是在TreeView的水平 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);
}
}
}
和测试
以下两个事件处理程序草案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));
只有一个事件?
谢谢
基本上,你想要哪个事件只触发一次? ItemExpanded或SelectedItemChanged? –
是的,'myTreeView_ItemExpanded'会多次触发,我只希望它触发一次。 SelectedItemChanged工作正常。 – user3357963