我在XAML中有这样的结构,每个项目都有复选框。
□ Fruits
□ Apple
□ Banana
□ Orange
我的目标是创建一个函数,如果选中了水果的复选框,则会选择所有的水果(全选)。
因此,我在我的复选框的 IsChecked 中绑定了 ViewModel 的函数。
<TreeView
ItemsSource="{Binding Foods}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type domain:Food}" ItemsSource="{Binding Fruits}">
<StackPanel Orientation="Horizontal">
<CheckBox
IsChecked="{Binding SelectAll}"
/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type domain:Fruit}">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TreeView.Resources>
</TreeView>
我的ViewModel是:
private bool _selectAll = false;
public bool SelectAll
{
get
{
return _selectAll;
}
set
{
foreach (var item in Fruits)
{
item.isSelected = true;
}
}
}
编辑
public class Food
{
public string Name { get; set; }
public ObservableCollection<Fruit> Fruits { get; set; } = new ObservableCollection<Fruit>();
}
public class Fruit
{
public string Name { get; set; }
public bool IsSelected { get; set; }
}
但是什么都没有发生。