WPF如何将复选框绑定到布尔值?

6
我有一个绑定到ViewModel可空布尔属性的WPF复选框。我在构造函数中将此属性设置为false或true,以避免间歇性状态,但无论我做什么,复选框的初始状态都保持灰色。绑定工作得很好,因为一旦我通过UI点击复选框更改状态,我就会得到控件的值(true / false)。有任何想法吗?
XAML:
<CheckBox Margin="0,4,0,3"
          VerticalAlignment="Center"
          Content="Mutual"
          IsChecked="{Binding MutualChb}" />

视图模型:
public ContstrutorViewModel()
{
    MutualChb = true;
}

private bool? _mutualChb;
public bool? MutualChb
{
    get { return _mutualChb; }
    set
    { 
        _mutualChb = value; 
        _mutualChb = ( _mutualChb != null ) ? value : false;
        OnPropertyChanged("MutualChb");
    }
}

它对我来说运行良好。你确定绑定工作正常吗?你是否在MutualChb的setter上设置了断点,以查看在单击时是否被调用? - Flat Eric
是的,绑定正常工作...一旦我在复选框上单击UI,我可以获取值...(true或false),具体取决于情况。 - Jim
1个回答

4
那是因为它最初是空的。
private bool? _mutualChb;
public bool? MutualChb
{
    get { return (_mutualChb != null ) ? _mutualChb : false; }
    set
    { 
        _mutualChb = value;               
        OnPropertyChanged("MutualChb"); 
    }
}

4
return (_mutualChb ?? false); 翻译为:看起来更好 - Federico Berasategui
1
是的,@Jim,我只是采用了你最初的代码,但我会写成(_mutualChb ?? false)。 - eran otzap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接