【问题标题】:WPF Bind checkbox to bool?WPF将复选框绑定到布尔值?
【发布时间】:2015-04-07 15:27:21
【问题描述】:

我有一个绑定到 ViewModel 可为空的布尔属性的 WPF 复选框。我在构造函数中将此属性设置为 false 或 true,以避免中间状态,但无论我做什么,复选框的初始状态都保持灰色。绑定工作得很好,因为一旦我通过单击 UI 上的复选框更改状态,我将获得控件值(真/假)。有什么想法吗?

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上设置断点,看看你点击时它是否被调用?
  • 是的,绑定工作正常...一旦单击复选框上的 UI,我就可以获取值。(真或假)取决于大小写

标签: c# wpf xaml mvvm checkbox


【解决方案1】:

原因是它最初为空。

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

【讨论】:

  • return (_mutualChb ?? false); 看起来更好
  • 是的@Jim 我刚刚使用了你的初始代码,但我会写 (_mutualChb ?? false);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多