Обновление: Фокус стал MVVM вместо фактического вопроса, поэтому я его обновляю.
У меня проблема с CanExecute
для DelegateCommand
. Он не обновляется до того, как я назову RaiseCanExecuteChanged
, это желаемое поведение?
Я загрузил простой пример проекта, воспроизводящий эту проблему здесь: http://dl.dropbox.com/u/39657172/DelegateCommandProblem.zip
Проблема в том, что у меня есть два Buttons
как это. Один из них - привязка Command
к реализации RelayCommand
, а другая привязка к реализации Prism DelegateCommand
<Button Command="{Binding DelegateSaveCommand}"/>
<Button Command="{Binding RelaySaveCommand}"/>
ViewModel ICommands
DelegateSaveCommand = new DelegateCommand(Save, CanSaveDelegate);
RelaySaveCommand = new RelayCommand(param => Save(), param => CanSaveRelay);
и CanExecute
метод/предикат
public bool CanSaveDelegate()
{
return HasChanges;
}
public bool CanSaveRelay
{
get { return HasChanges; }
}
Оба используют свойство HasChanges
. Когда HasChanges
обновляется, обновляется только CanSaveRelay
. Так оно и должно быть?