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

标签 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");
        }
    }

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

Object reference not set to an instance of an object.' Str.get returned null



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

最佳答案

因为你没有初始化你的_str对象,_str将指向 NULL
当你 get可以查看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))
    }
}

关于c# - 检查复选框 MVVM 中是否未选择任何项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574555/

相关文章:

c# - 在 C# 中,如何构造和解析嵌套的查询字符串?

C# Entity Framework 查询存储过程错误 "Culture is not supported"

wpf - 放置具有不同高度的 block ,例如具有特定顺序的图 block - WPF、XAML

c# - WPF:在输入时将焦点移至 ItemsControl 中的下一个项目

mvvm - 接口(interface)绑定(bind)到没有 MVVM 包的 ViewModel

wpf - WPF 中的 WebBrowser 使用 MVVM 模式

c# - 如何从流读取器或流写入器分离流?

c# - 在 dataGridView 中创建自定义格式字符串

c# - 通过 Adapter.Update 将 DataTable 保存到 SQLite 数据库

c# - 如何为 WPF 数据网格中的特定列设置 StringFormat,其值通过 ItemsSource 方法填充