PRISM DelegateCommand +示例数据

时间:2011-12-01 17:51:01

标签: wpf xaml prism expression-blend sample-data

我有一个ViewModel,它使用DelegateCommand属性绑定到Button的{​​{1}}属性。

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

IsActive

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

DelegateCommand的设置方式,激活时不会执行任何操作。如果这是期望的行为,我的建议是不要声明它。 WPF将优雅地处理绑定到null ICommand对象。

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

如果您希望它绑定到DelegateCommand,并且您希望DelegateCommand在触发命令时实际 DO 某些内容,则会更复杂一些。您必须使用我之前提到的子类DelegateCommand,但您还必须能够在XAML中定义委托。我认为那里有样本,但我猜他们会涉及标记扩展和那些性质的东西。您在这种方法上的投资回报可能有点低,但您的里程可能会有所不同。

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