我想使用WPF中的TreeView.AfterCollapse事件。 有沒有一種方法來使用它? 爲什麼WPF中不支持所有的事件? 謝謝爲什麼不是WPF控件中的所有事件
回答
TreeViewItem
有Collapsed
事件,這相當於Windows窗體的AfterCollapsed
事件。此事件最初由TreeViewItem
提出,而不是TreeView
,但由於這是冒泡事件,因此也會在TreeView
之後提出,所以如果需要,您可以在此級別處理它。您可以使用OriginalSource
屬性來獲取對引發事件的TreeViewItem
:
XAML
<TreeView TreeViewItem.Collapsed="TreeViewItem_Collapsed" ...>
代碼隱藏
private void TreeViewItem_Collapsed(object sender, RoutedEventArgs e)
{
TreeViewItem tvi = (TreeViewItem)e.OriginalSource;
...
}
我知道如何使用TreeViewItem摺疊。但我的問題是我的treevieitem崩潰後,我的多重綁定生成其他treeviewitems,我想訪問它們。所以我想如果我有一個事件發生後,TreeViewItem崩潰和REFILLED我會看到我新的新創建的TreeViewItem。我應該發佈另一個更具體的問題 –
@Mohamed,如果您的TreeViewItems是通過綁定生成的,請查看| ItemContainerGenerator](http://msdn.microsoft.com/zh-cn/library/system.windows.controls .itemscontrol.itemcontainergenerator.aspx)屬性 –
您可以擴展TreeViewItem對象以添加此功能。
下面是我用過的一個例子。它來自微皺,其MSDN職位救了我幾次:
public class MyTreeViewItem : TreeViewItem
{
public static readonly RoutedEvent CollapsingEvent =
EventManager.RegisterRoutedEvent("Collapsing",
RoutingStrategy.Bubble, typeof(RoutedEventHandler),
typeof(MyTreeViewItem));
public static readonly RoutedEvent ExpandingEvent =
EventManager.RegisterRoutedEvent("Expanding",
RoutingStrategy.Bubble, typeof(RoutedEventHandler),
typeof(MyTreeViewItem));
public event RoutedEventHandler Collapsing
{
add { AddHandler(CollapsingEvent, value); }
remove { RemoveHandler(CollapsingEvent, value); }
}
public event RoutedEventHandler Expanding
{
add { AddHandler(ExpandingEvent, value); }
remove { RemoveHandler(ExpandingEvent, value); }
}
protected override void OnExpanded(RoutedEventArgs e)
{
OnExpanding(new RoutedEventArgs(ExpandingEvent, this));
base.OnExpanded(e);
}
protected override void OnCollapsed(RoutedEventArgs e)
{
OnCollapsing(new RoutedEventArgs(CollapsingEvent, this));
base.OnCollapsed(e);
}
protected virtual void OnCollapsing(RoutedEventArgs e) { RaiseEvent(e); }
protected virtual void OnExpanding(RoutedEventArgs e) { RaiseEvent(e); }
}
這是沒有用的......當你的Collapsing事件發生時,TreeViewItem已經被摺疊了。 OnCollapsed不會摺疊TreeViewItem,它只會引發事件... –
@Josh謝謝你,但我想AfterExpanding(和重填)事件。 –
- 1. 爲什麼WPF邊框控件沒有mousedoubleclick事件?
- 2. 什麼是WPF中的觸摸事件?
- 3. 爲什麼SourceUpdated事件不會觸發我在WPF中的圖像控件?
- 4. 爲什麼所有事件都是散裝的而不是一個一個的?
- 5. 什麼是WPF預覽事件?
- 6. 爲什麼WPF TreeView控件繼承自ItemsControl而不是Selector?
- 7. 爲什麼WPF中的UI控件具有線程親和性?
- 8. WPF:什麼是通用容器控件?
- 9. 爲什麼sed不能代替所有的事件?
- 10. 找到ItemsControl中的所有控件 - WPF
- 11. 爲什麼ItemsControl中控件的名稱不顯示在Wpf
- 12. Websphere JAVA_DUMP_OPTS條件捕獲的所有事件是什麼?
- 13. 什麼是所有文件
- 14. 爲什麼我的所有控件都不顯示?
- 15. 爲什麼WPF中沒有一個點擊事件?
- 16. 爲什麼不是所有控件都在ASP.NET頁生命週期的事件處理點初始化?
- 17. 爲什麼Javascript事件與實際用戶事件有所不同?
- 18. 在Backbone.js中,「綁定」的所有事件是什麼?
- 19. 爲什麼TouchDown,TouchUp事件不會出現在WPF中?
- 20. 爲什麼我在WPF C#中不能輸入關鍵事件?
- 21. 爲什麼Asp.Net控件不會公開與...相同的事件?
- 22. 爲什麼.h文件中的.cpp文件中的所有變量都不是?
- 23. 找到所有現有的WPF控件
- 24. 爲什麼是X:在ResourceDictionary中所需的控件模板鍵
- 25. CalendarProvider爲什麼不能獲取所有事件?
- 26. 如何刪除WPF中控件的構建事件中的所有關聯?
- 27. 什麼事件處理Microsoft Access 2003中窗體上的所有控件?
- 28. 如何查找控件(WPF,C#)中的所有控件?
- 29. 爲什麼不能通過HtmlHelper呈現所有表單控件?
- 30. 爲什麼所有選定的QGraphicsItem沒有收到mouseMove事件?
的System.Windows.Forms.TreeView是不同於System.Windows.Controls.TreeView的控件。在WinForms中你將使用一個,而在WPF中你將使用另一個。不知道爲什麼這個事件沒有被微軟遷移。 – fatty
是的好我知道,但我想知道如果不知何故我可以添加一個事件從system.windows.forms.treeview到我的System.Windows.Controls.TreeView。 –
你不能。像脂肪說,他們是兩個完全不同的控制。這與WPF支持並非所有WinForms事件的原因相同,因爲** WinForms不僅僅是WPF **。 – BoltClock