将CanExecute设置为数据上下文的方法

时间:2011-03-09 12:19:34

标签: c# wpf xaml .net-3.5

我可能会以错误的方式解决这个问题。我试图在视图中尽可能少地放置代码,所以我希望我的命令绑定的CanExecuteExecuted事件在我的viewmodel中处理,这是我的数据上下文。

我确定我错过了一些非常简单的东西,但我想不出怎么做。

命令绑定的XAML:

<UserControl.CommandBindings>
    <CommandBinding Command="DataControls:ParameterCollectionViewModel.UpdateCollection"
                    CanExecute="???"
                    Executed="???"
                    />
</UserControl.CommandBindings>

DataControls:ParameterCollectionViewModel.UpdateCollection是静态RoutedCommand,但数据上下文的类型为ParameterCollectionViewModel(并非重要)。

如何将数据上下文中的事件处理程序作为命令绑定中的事件处理程序?

2 个答案:

答案 0 :(得分:2)

如果您使用DelegateCommand或类似的东西(Microsoft Prism源中也存在实现),您可能会更高兴。

答案 1 :(得分:0)

简单地说,您需要将命令添加到您的datacontext。如果datacontext是DependencyObject,则只需将新命令添加到Commands属性。

如果datacontext不是依赖属性,我希望它是一个视图模型。在这种情况下,您可以使用RelayCommand或DelegateCommand(实际上,它们都是相同的)。

我是Catel的开发人员之一,这是一个开源MVVM框架,它也支持命令。您可以找到有关Catel commands

的更多信息