Допустим, у вас есть кнопка, свойство command
которой привязано к некоторому ICommand
из текущий элемент некоторой коллекции.
Когда коллекция имеет значение null
, кнопка остается включенной, и нажатие на нее кажется недействительным. Вместо этого я хочу, чтобы кнопка оставалась отключенной. Я понял следующее, чтобы кнопки оставались отключенными, когда коллекция равна нулю. Однако это кажется слишком запутанным для чего-то, что можно возможнореализовать более естественным, простым и более похожим на MVVM.
Отсюда вопрос: есть ли более простой способ отключить эту кнопку, в идеале, когда не используется программный код?
.xaml:
.cs:
public class ViewModel : NotificationObject
{
ObservableCollection _items;
public DelegateCommand DisabledCmd { get; private set; }
public ObservableCollection Items {
get { return _items; }
set { _items = value; RaisePropertyChanged("Items"); }
}
public ViewModel()
{
DisabledCmd = new DelegateCommand(DoNothing, CantDoAnything);
}
void DoNothing() { }
bool CantDoAnything()
{
return false;
}
}
Изменить:
Несколько замечаний:
DoSomethingCmd.CanExecute
поможет, так как нет DoSomethingCmd
для доступа, пока нет текущего элемента.DisabledCmd
? Я не заинтересован в повышении DoSomethingCmd
, так как это не то, что я ищу. Иначе я бы не задавал этот вопрос.Другое редактирование:
Итак, я в основном принял этот ответ в качестве решения: WPF/MVVM: отключить состояние кнопки, когда ViewModel позади UserControl еще не инициализирован?
Я полагаю, что это именно то, что предлагает Хабарк.