wpf treeview checkbox selected item

在 WPF TreeView 中使用 CheckBox,可以通过以下步骤来获取选中的项:

  • 在 TreeView 中定义一个带有 CheckBox 的数据模板,例如:
  • <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
    

    其中,IsSelected 是数据模型中的一个布尔属性,用于标记项是否被选中。

  • 在 TreeView 的 SelectedItemChanged 事件处理程序中,遍历 TreeView 中的所有项,找到被选中的项:
  • private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        // 遍历 TreeView 中的所有项
        foreach (var item in GetItems(treeView))
            // 如果该项被选中,则将其添加到选中项列表中
            if (item.IsSelected)
                selectedItems.Add(item);
    private IEnumerable<ItemViewModel> GetItems(ItemsControl parent)
        // 递归遍历 ItemsControl 中的所有项
        foreach (var item in parent.Items.Cast<ItemViewModel>())
            yield return item;
            var childItemsControl = parent.ItemContainerGenerator.ContainerFromItem(item) as ItemsControl;
            if (childItemsControl != null)
                foreach (var childItem in GetItems(childItemsControl))
                    yield return childItem;
    

    在这个例子中,ItemViewModel 是数据模型类,代表 TreeView 中的每一项。

    通过以上的代码,我们可以获取选中的项并将其添加到选中项列表中。请注意,如果你只需要获取当前选中项,而不需要获取所有选中项,则可以直接访问 SelectedItem 属性,该属性会返回 TreeView 中当前选中的项。

    希望这些信息能够帮到你。如果你需要更多的帮助,请继续提问。

  •