我在checkboxes
中有一堆grid
。我有两个buttons
,一个'全部检查'按钮和'取消选中所有'按钮。这些名字不言自明,但当我点击“全部检查”时,按钮,应检查所有复选框。当我点击“取消选中所有'按钮,应取消选中所有复选框。
现在,我可以创建一个命令来遍历每个复选框并检查/取消选中它们的按钮,但我想知道是否有更简单的方法使用某些绑定。例如,我试过这个:
在xaml中:
<Grid>
<CheckBox Grid.Row="1"
Grid.Column="2"
IsChecked="{Binding IsChecked}" />
<CheckBox Grid.Row="2"
Grid.Column="2"
IsChecked="{Binding IsChecked}"/>
</Grid>
在我的视图模型中:
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set { _isChecked = value; OnPropertyChanged("IsChecked"); }
}
上面的内容并不起作用,因为所有复选框都绑定到同一个bool。因此,检查/取消选中一个对所有人都做同样的事情。但是我想做那样的事情。有什么我没有想到的,或者是通过它们全部循环的主要方式吗?
答案 0 :(得分:1)
是否有一些我没有想到的东西,或者是通过它们循环的主要方式?
不,是的。您应该使用循环来迭代源集合中的所有项目,并将其各自的 IsChecked属性设置为true。
显然,如果您希望能够单独检查和取消选中每个CheckBox,则无法将所有CheckBox绑定到单个源属性,只需设置此属性即可。
除了使用某种循环之外,没有其他或更好的方法可以做到这一点。
答案 1 :(得分:1)
ViewModel方法运行正常
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set { _isChecked = value; OnPropertyChanged("IsChecked"); }
}
关键是你必须定义一个ItemsSource
的绑定(相当于循环)和一个具有IsChecked
属性的对象的集合。这样,每个复选框都将独立启用和禁用