代表和RelayCommand

时间:2013-02-26 10:17:20

标签: .net relaycommand

我认为我会围绕代表,因为它创建了对方法的引用,然后可以通过“外部”代码(另一个dll /项目)引用。

现在我正在使用MVVM,我看到这个名为RelayCommand的东西看起来好像是以传递委托的方式传递方法作为参数。这怎么可能?

我正在看的代码是

        public RelayCommand AddUserCommand { get; set; }

        public ViewModelMain()
        {
            this.AddUserCommand = new RelayCommand(AddUser, null);
        }

        void AddUser(object parameter)
        {
            //logic
        }

,RelayCommand对象是

public class RelayCommand : ICommand
{
    public RelayCommand(Action<object> execute, Predicate<object> canExecute)
    {
         //logic
    }
}

因此,由于没有委托,我可以假设Action&lt;&gt;正在发生一些诡计。对象

1 个答案:

答案 0 :(得分:1)

Action<object>是代表。当你写:

new RelayCommand(AddUser, null)

编译器将其重写为:

new RelayCommand(new Action<object>(AddUser), null)

正如您所期望的那样,它创建了对方法的引用。