none
在一个treeViewitem发生展开或收缩行为的时候“做一件事“。这要如何做到?用TreeView或TreeViewItem的什么事件可以做到? RRS feed

  • 问题

  • 当一个treeViewitem发生展开或收缩行为时,我想做一件事,例如"获取该TreeViewitem(该TreeViewItem可能没被选中)绑定的实体对象。然后操作这个实体对象做些什么。",这要如何做到?用什么事件做到?


    2016年11月9日 11:24

答案


  • Hi 轮回的齿轮,

    展开对应的事件:Expanded
    收缩对应的事件:Collapsed

    在XAML 中这样写(写入TreeViewItem标签):

    Expanded="OnExpanded"
    Collapsed="OnCollapsed"
    

    在C#中定义事件处理:

    private void OnExpanded(object sender, RoutedEventArgs e)
    {
        //Perform actions when the TreeViewItem is expanded
    }
    
    private void OnCollapsed(object sender, RoutedEventArgs e)
    {
        //Perform actions when the TreeViewItem is collapsed
    }

    以Expanded事件为例:
    在TreeViewItem标签中设置Expanded="OnExpanded"之后,对应的事件处理:

    private void OnExpanded(object sender, RoutedEventArgs e) { //Perform actions when the TreeViewItem is expanded TreeViewItem tvi = e.OriginalSource as TreeViewItem; if (tvi != null) {

       //Object  objects = (Object)tvi.Header; MessageBox.Show(string.Format("TreeNode '{0}' was expanded", tvi.Header)); } }


    当展开TreeViewItem的时候,我们写入事件处理器的代码即执行。效果图:

    关于Expanded和Collapsed事件可以参考这两篇文档:
    https://msdn.microsoft.com/zh-cn/library/system.windows.controls.treeviewitem.expanded(v=vs.110).aspx

    https://msdn.microsoft.com/zh-cn/library/system.windows.controls.treeviewitem.collapsed(v=vs.110).aspx


    Best Regards,

    Yohann Lu



    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年11月10日 9:03
    版主