在 prism 中的 DelegateCommand 上的 ObservesCanExecute 有一些我不理解的东西。AutoProperties 可以看到一些东西......我认为
我有一个带有按钮的视图,该按钮绑定到我的视图模型中的 DelegateCommand。出于某些原因,在我看来,我像这样捕获 CanExecuteChanged 事件:
MyButton.Command.CanExecuteChanged += Command_CanExecuteChanged;
问题是,在我的视图模型中,当我使用自动属性声明 IsEnabled 时,视图中的事件不会被触发。就像 ObservesCanExecute 不再起作用一样。正常吗?有什么我做错了吗?我认为 AutoProperties 和 Properties 完全一样......这是我的 ViewModel :
public class MainPageViewModel : ViewModelBase
{
// VERSION 1 - It Works
private bool _isEnabled = true;
public bool IsEnabled
{
get { return _isEnabled; }
set { SetProperty(ref _isEnabled, value); }
}
// VERSION 2 - Don't works
// public bool IsEnabled {get; set; } = true;
public DelegateCommand MyCommand { get; set; } = null;
public MainPageViewModel(INavigationService navigationService)
: base(navigationService)
{
Title = "Main Page";
MyCommand = new DelegateCommand(Execute).ObservesCanExecute(() => IsEnabled);
}
private void Execute()
{
IsEnabled = !IsEnabled;
}
}