首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >棱镜DelegateCommand +样本数据

棱镜DelegateCommand +样本数据
EN

Stack Overflow用户
提问于 2011-12-02 01:51:01
回答 2查看 2.1K关注 0票数 1

我有一个ViewModel,它使用DelegateCommand属性绑定到ButtonCommand属性。

问题是我的样本数据不喜欢DelegateCommand对象。它抱怨说:The type "DelegateCommand" does not include any accessible constructors.此外,唯一公开的属性是IsActive属性。

代码语言:javascript
复制
<local:MyViewModel xmlns:local="clr-namespace:MyNamespace"
                   xmlns:prism="http://www.codeplex.com/prism">
    <local:MyViewModel.Age>47</local:MyViewModel.Age>
    <local:MyViewModel.PurchaseAlcohalCommand>
        <prism:DelegateCommand IsActive="True" />
    </local:MyViewModel.PurchaseAlcohalCommand>
</local:MyViewModel>
EN

回答 2

Stack Overflow用户

发布于 2011-12-02 02:34:23

更改视图模型以公开ICommand而不是DelegateCommand。DelegateCommand只是ICommand的一个实现;如果您以后想从MvvmLight切换到RelayCommand,那么您的视图和示例数据就不必关心了。

我不确定这是否会解决您的问题,但我怀疑它可能会。另外,这只是一个很好的编程实践。

票数 1
EN

Stack Overflow用户

发布于 2011-12-08 00:52:55

按照你的DelegateCommand设置方式,当它被激活时,它不会做任何事情。如果这是想要的行为,我的建议是简单地不声明它。WPF将优雅地处理绑定到null ICommand对象。

或者,如果您需要将其绑定到实例化的DelegateCommand,则可以子类DelegateCommand以包含无参数构造函数。

如果你想让它绑定到一个DelegateCommand上,并且你想让这个DelegateCommand在命令被触发的时候DO,那就有点复杂了。您必须使用我前面提到的子类化的DelegateCommand,但您还必须能够在XAML中定义委托。我认为有一些示例,但我猜它们涉及诸如标记扩展之类的东西。您在此方法中的投资回报可能有点低,但您的里程数可能会有所不同。

最后一种选择是通常的处理方式:在ViewModel的构造函数中定义DelegateCommands

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

https://stackoverflow.com/questions/8345921

复制
相关文章

相似问题

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