我正在使用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