У меня есть команда кнопки, которая может быть выполнена только в этом случае:
public bool CanClick
{
get
{
return (DateX.HasValue) &&
(DateY.HasValue) && !string.IsNullOrEmpty(Str.NomStr)
}
}
ComboBox 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
Вопрос в том, почему я получаю это, если я на самом деле проверяю, null или нет?





Поскольку вы не инициализировали свой объект _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))
}
}
У меня есть два значения, которые я должен передать в конструктор, что я должен передать? поскольку значения должны извлекаться в первую очередь из базы данных.
если Str==null не установил значение, это означает, что нельзя щелкнуть правой кнопкой мыши?
да, вот и все.
Str! = Null (только) будет работать, а добавление IsNullOrEmpty вернет ту же ошибку. Спасибо!
вы можете использовать оператор
?для проверки нулевого значения =>!string.IsNullOrEmpty(Str?.NomStr), он называется нуль-условный-оператор