Customizing the TreeView to allow multi select

前端 未结 4 1840
迷失自我
迷失自我 2020-12-02 15:24

The built-in WPF TreeView control does not allow for multi selection, like a ListBox does. How can I customize the TreeView to allow for multi selection without rewriting i

4条回答
  •  天命终不由人
    2020-12-02 16:07

    I've simplified this task adding a checkbox before the text for each treeviewitem.

    So, I've created a dockpanel with 2 items inside: checkbox + textblock.

    So...

    XAML

    
                  
      
    
    

    CS

    TreeViewItem treeViewItem = new TreeViewItem();
    DockPanel dp = new DockPanel();
    CheckBox cb = new CheckBox();
    TextBlock tb = new TextBlock();
    tb.Text = "Item";
    dp.Children.Add(cb);
    dp.Children.Add(tb);
    treeViewItem.Header = dp;
    treeViewItem.Selected += new RoutedEventHandler(item_Selected);
    treeView.Items.Add(treeViewItem);
    

    And then you can access checkbox value:

    void item_Selected(object sender, RoutedEventArgs e)
    {
      selectedTVI = ((TreeViewItem)sender);
    
      CheckBox cb = (Checkbox)((DockPanel)selectedTVI.Header).Children[0];
    }
    

    This is a simple way to do if you don't need anything complex.

提交回复
热议问题