silverlight:复选框选中/取消选中,选中/取消选中另一个复选框

时间:2013-08-07 16:32:40

标签: silverlight checkbox

我没有几个复选框(其中8个),其中一个用于启用/禁用其他7个复选框。

因为我写的是,

IsEnabled="{Binding ElementName=ControlchkEnable, Path=IsChecked, Mode=OneWay}"
IsChecked="{Binding ElementName=ControlchkEnable, Path=IsChecked, Mode=OneWay}"

在每个受抚养的CB中。 现在启用/禁用工作正常, 但是如果取消选中主复选框,则其他复选框未取消选中,它们就会被禁用。

知道出了什么问题吗?

1 个答案:

答案 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}"