How to programmatically select an item in a WPF TreeView?

后端 未结 16 2320
时光取名叫无心
时光取名叫无心 2020-11-28 08:42

How is it possible to programmatically select an item in a WPF TreeView? The ItemsControl model seems to prevent it.

16条回答
  •  Happy的楠姐
    2020-11-28 08:52

    I've succeeded with this code:

    public static TreeViewItem FindTviFromObjectRecursive(ItemsControl ic, object o) {
      //Search for the object model in first level children (recursively)
      TreeViewItem tvi = ic.ItemContainerGenerator.ContainerFromItem(o) as TreeViewItem;
      if (tvi != null) return tvi;
      //Loop through user object models
      foreach (object i in ic.Items) {
        //Get the TreeViewItem associated with the iterated object model
        TreeViewItem tvi2 = ic.ItemContainerGenerator.ContainerFromItem(i) as TreeViewItem;
        tvi = FindTviFromObjectRecursive(tvi2, o);
        if (tvi != null) return tvi;
      }
      return null;
    }
    

    Usage:

    var tvi = FindTviFromObjectRecursive(TheTreeView, TheModel);
    if (tvi != null) tvi.IsSelected = true;
    

提交回复
热议问题