首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >委托和RelayCommand

委托和RelayCommand
EN

Stack Overflow用户
提问于 2013-02-26 18:17:20
回答 1查看 278关注 0票数 1

我想我已经弄清楚了委托,因为它创建了一个对方法的引用,然后可以被“外部”代码(另一个dll/项目)引用。

现在我正在使用MVVM,我看到了一个叫做RelayCommand的东西,它看起来就像是在传递一个方法作为一个参数,就像传递一个委托一样。这怎麽可能?

我正在查看的代码是

代码语言:javascript
复制
        public RelayCommand AddUserCommand { get; set; }

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

        void AddUser(object parameter)
        {
            //logic
        }

而RelayCommand对象是

代码语言:javascript
复制
public class RelayCommand : ICommand
{
    public RelayCommand(Action<object> execute, Predicate<object> canExecute)
    {
         //logic
    }
}

因此,既然没有委托,我可以假定Action<>对象发生了一些欺骗吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-26 18:21:42

Action<object>是一个代表。当你写的时候:

代码语言:javascript
复制
new RelayCommand(AddUser, null)

编译器将其替换为:

代码语言:javascript
复制
new RelayCommand(new Action<object>(AddUser), null)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15086476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档