我有一个按钮命令,只能在这种情况下执行:
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,为什么会得到这个?
答案 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))
}
}