我有一个选择'全部'复选框,我想绑定到其他复选框的(IsChecked ||!IsEnabled) .
-
选中“全部”选中所有已启用的复选框 .
-
取消选中“全部”取消选中所有复选框 .
-
手动检查每个已启用的复选框将选中“全部” .
-
当选中所有已启用的复选框和“全部”并且用户取消选中任何复选框时,“全部”会自动取消选中 .
我是WPF Databinding的新手 . 我想也许我只是点击“全部”来设置其他复选框 . 但我不知道如何绑定到多个源的两个属性 . 当我点击“全部”并手动取消选中另一个复选框时,“全部”需要取消选中 .
2 回答
这是使用转换器在Xaml中执行此操作的方法 . 这假设您的所有CheckBox都直接作为Xaml中的控件添加(它不是非常动态,不适用于DataTemplate等) . 首先,我们创建三个CheckBoxes(CheckBox1,CheckBox2,CheckBox3),在检查CheckAllCheckBox时将检查/取消选中 . 它也会反向运作 .
Update
最后一部分(忽略禁用的CheckBox)在这里有点问题,我看到了更好的方法 . 我们存储Convert的值,并在ConvertBack中重用它们用于禁用的CheckBox . 这样做,我们还应该为CheckAllConverter添加x:Shared = "False"属性,因为每个使用它的MultiBinding都需要一个新实例(在这种情况下不太可能但仍然......)
CheckAll转换器
我将使用MVVM设计模式在View类后面创建一个ViewModel:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
然后在您的ViewModel(必须实现INotifyPropertyChanged)上,您可以拥有多个
bool
属性,每个CheckBox一个属性,另外一个用于所有属性: