我没有几个复选框(其中8个),其中一个用于启用/禁用其他7个复选框。
因为我写的是,
IsEnabled="{Binding ElementName=ControlchkEnable, Path=IsChecked, Mode=OneWay}"
IsChecked="{Binding ElementName=ControlchkEnable, Path=IsChecked, Mode=OneWay}"
在每个受抚养的CB中。 现在启用/禁用工作正常, 但是如果取消选中主复选框,则其他复选框未取消选中,它们就会被禁用。
知道出了什么问题吗?
答案 0 :(得分:1)
禁用该复选框后,您无法更改值。
要在MVVM中执行此操作,您必须在禁用主复选框之前更改值:
<强> c#中强>
/// <summary>
/// Bind to IsChecked of "ControlchkEnable" element (TwoWay)
/// and bind to IsEnabled of each of other 7 checkbox's (OneWay)
/// </summary>
public bool ControlchkEnable
{
get { return _controlchkEnable; }
set
{
if (value == _controlchkEnable) return;
_controlchkEnable = value;
// Before informing the checkboxes are disabled,
// pass their values to uncheck
if (!_controlchkEnable)
{
Check1 = false;
// Check2 = false;
// Check...= false;
}
// Raise UI that value changed
RaisePropertyChanged("ControlchkEnable");
}
}
private bool _controlchkEnable;
/// <summary>
/// Bind to IsChecked of one of other 7 checkbox's (TwoWay)
/// </summary>
public bool Check1
{
get { return _check1; }
set
{
if (value == _check1) return;
_check1 = value;
RaisePropertyChanged("Check1");
}
}
private bool _check1;
Xaml:
<!-- Main checkbox -->
IsChecked="{Binding ControlchkEnable, Mode=TwoWay}"
<!-- Other checkbox's -->
IsEnabled="{Binding ControlchkEnable, Mode=OneWay}"
IsChecked="{Binding Check1, Mode=TwoWay}"