绑定到命令

执行操作的控件,如Button具有可以绑定到ICommandCommand属性。激活控件时(例如单击按钮时),将调用ICommand.Execute方法。

在ReactiveUI的ReactiveCommand中可以找到ICommand的良好实现。如果您使用Avalonia MVVM应用程序创建了应用程序模板,则默认情况下可用。请参阅ReactiveUI文档获取更多信息。

一个例子:

namespace Example
{
    public class MainWindowViewModel : ViewModelBase
    {
        public MainWindowViewModel()
        {
            DoTheThing = ReactiveCommand.Create(RunTheThing);
        }

        public ReactiveCommand<Unit, Unit> DoTheThing { get; }

        void RunTheThing()
        {
            // 此处执行命令的代码。
        }
    }
}

CommandParameter

也可以使用CommandParameter属性将参数传递给命令:

注意:不会对CommandParameter执行类型转换,因此如果您需要的类型参数不是string,则必须在XAML中提供该类型的对象。例如,要传递int参数,可以使用:

与任何其他属性一样,CommandParameter也可以被绑定。

绑定到方法

ICommand.Execute

有时,您只想在单击按钮时调用一个方法,而不想专门创建命令,你也可以这样做!

ICommand.CanExecute

如果需要使执行依赖于CommandParameter或ViewModel属性,则可以定义由前缀“Can”和执行方法名称组成的命名方法;该方法将接受作为CommandParameter的对象参数,并返回一个布尔值。

触发ICommand.CanExecute

如果要从ViewModel中触发CanExecute,则必须用一个或多个DependsOn属性来修饰它,其中,当CanExecute方法更改值时,propertyName是将激活该方法的属性的名称。

范例

Commands Example

最后更新于

这有帮助吗?