检查复选框MVVM中是否未选择任何项目

时间:2018-07-28 19:28:35

标签: c# wpf mvvm

我有一个按钮命令,只能在这种情况下执行:

  public bool CanClick
        {
            get
            {
                return (DateX.HasValue) &&
                       (DateY.HasValue) && !string.IsNullOrEmpty(Str.NomStr)

            }

        }

组合框SelectedItem绑定到:

 private Structure _str;
    public Structure Str
    {
        get { return _str; }
        set
        {
            _str = value;
            NotifyOfPropertyChange("Str");
        }
    }

一旦我开始填写字段(日期等),就会收到错误消息

  

对象引用未设置为对象的实例。”   Str.get返回null

问题是,如果我实际上在检查它是否为null,为什么会得到这个?

1 个答案:

答案 0 :(得分:2)

由于您没有初始化_str对象,因此_str将指向NULL

当您使用get Str时,可以检查if==null,然后设置默认值。

private Structure _str;
public Structure Str
{
    get {
        if(_str == null)
           _str = new Structure();
        return _str; 
    }
    set
    {
        _str = value;
        NotifyOfPropertyChange("Str");
    }
}

编辑

如果Str==null没有设置值,则表示无法单击。

您可以尝试使用此代码

因为&&需要将右侧和左侧条件设为true

右侧为false,它将返回false。将不会执行左侧条件。

public bool CanClick
{
    get
    {
        return (DateX.HasValue) &&
               (DateY.HasValue) && (Str!=null && !string.IsNullOrEmpty(Str.NomStr))
    }
}