在 WPF 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 中当前选中的项。
希望这些信息能够帮到你。如果你需要更多的帮助,请继续提问。