提前致谢!

我应该如何在PRISM 6的DelegateCommand中使用ObservesCanExecute?

public partial class  UserAccountsViewModel: INotifyPropertyChanged
{
    public DelegateCommand InsertCommand { get; private set; }
    public DelegateCommand UpdateCommand { get; private set; }
    public DelegateCommand DeleteCommand { get; private set; }

    public UserAccount SelectedUserAccount
    {
        get;
        set
        {
            //notify property changed stuff
        }
    }

    public UserAccountsViewModel()
    {
        InitCommands();
    }

    private void InitCommands()
    {
        InsertCommand = new DelegateCommand(Insert, CanInsert);
        UpdateCommand = new DelegateCommand(Update,CanUpdate).ObservesCanExecute(); // ???
        DeleteCommand = new DelegateCommand(Delete,CanDelete);
    }

    //----------------------------------------------------------

    private void Update()
    {
        //...
    }

    private bool CanUpdate()
    {
        return SelectedUserAccount != null;
    }

    //.....
}

不幸的是,我对C#中的表达式不熟悉。另外,我认为这对其他人会有帮助。

最佳答案

ObservesCanExecute()的工作方式大致类似于canExecuteMethodDelegateCommand(Action executeMethod, Func<bool> canExecuteMethod)参数。

但是,如果您具有 bool 属性而不是方法,则无需使用canExecuteMethod定义ObservesCanExecute

在您的示例中,假设CanUpdate不是方法,而只是它是 bool 属性

然后,您可以将代码更改为ObservesCanExecute(() => CanUpdate),并且仅当DelegateCommand bool 值属性的值为CanUpdate时才执行true(无需定义方法)。
ObservesCanExecute就像是属性的“快捷方式”,而不必定义方法并将其传递给canExecuteMethod构造函数的DelegateCommand参数。

关于WPF PRISM 6 DelegateComand观察可以执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34266935/

10-13 01:36