У меня есть кнопка с простой командой связывания на мой взгляд:Кнопка всегда в состоянии инвалидов
<Window ...>
<Window.DataContext>
<vm:ShellViewModel />
</Window.DataContext>
...
<Button Command="{Binding DoSomethingCoolCommand}" Content="Execute" />
и ВМ:
public class ShellViewModel : ObservableObject {
private RelayCommand _doSomethingCoolCommand;
public ICommand DoSomethingCoolCommand {
get {
return _doSomethingCoolCommand ??
(_doSomethingCoolCommand = new RelayCommand(DoSomethingCool));
}
}
private void DoSomethingCool() { ... }
Однако кнопка отключена в приложении/view startup, и я не могу включить его. Я попытался передать оценку выполнения команды на RelayCommand
, а также установить IsEnabled
на представление. Я что-то упускаю?
Редактировать
RelayCommand и ObservableObject взяты из MVVM проекта фундамента, как указано в тегах. Ссылка: https://mvvmfoundation.codeplex.com
Какую версии RelayCommand вы используете здесь? Это твой собственный пользовательский класс? –
@RohitVats Нет, это из проекта фонда MVVM. См. Https://mvvmfoundation.codeplex.com/SourceControl/latest#MvvmFoundation/MvvmFoundation.Wpf/RelayCommand.cs – xvdiff
Только причина была бы, если делегат CanExecute возвращает false для DoSomethingCoolCommand, но вы не предоставили этот делегат. Поэтому всегда должно быть правдой. Это полный код? У вас есть делегат CanExecute или у вас есть шаблон по умолчанию, определенный для кнопки в приложении? –