У меня есть CanExecute
для команды WPF, которая, похоже, работает по-разному в зависимости от того, насколько я явчен с компилятором; проблема в том, что я не ожидал бы, что должен быть явным.Почему у этого кода появляется ошибка?
private bool CanRemoveField()
{
return SelectedField != null &&
Context.Item.Id == 0
? _fieldsByFieldModel.ContainsKey(SelectedField)
: !_hasAnyCosts;
}
Приведенный выше код, когда запрошенный для пункта, где Id != 0
верно, кнопка включена несмотряSelectedField
будучи null
, так что я бы ожидать, что условное к короткому замыканию и вернуть false
.
Код подправил немного:
private bool CanRemoveField()
{
return SelectedField != null &&
(Context.Item.Id == 0
? _fieldsByFieldModel.ContainsKey(SelectedField)
: !_hasAnyCosts);
}
Я ввел некоторые скобки вокруг троичного, если, и это теперь, показывает желаемое поведение отключения кнопки, если не выбрано ни одного поля.
Учитывая тот факт, что это тройной, если бы я ожидал, что поведение, которое я хотел бы сделать возможным, без необходимости в круглых скобках, поскольку его следует рассматривать только как одно утверждение, нет?
Имейте в виду: [Это всегда ваша ошибка] (http://blog.codinghorror.com/the-first-rule-of-programming-its -всегда ваша ошибка /) –