【问题标题】:Set CanExecute to be a method of the data context将 CanExecute 设置为数据上下文的方法
【发布时间】:2011-03-09 12:19:34
【问题描述】:

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

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

命令绑定的 XAML:

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

DataControls:ParameterCollectionViewModel.UpdateCollection 是静态的RoutedCommand,但数据上下文的类型是ParameterCollectionViewModel(没关系)。

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

【问题讨论】:

    标签: c# wpf xaml .net-3.5


    【解决方案1】:

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

    【讨论】:

    • 感谢您的信息。这就是我所采用的方法。
    【解决方案2】:

    简单地说,您需要将命令添加到数据上下文中。如果 datacontext 是一个 DependencyObject,您可以简单地向 Commands 属性添加一个新命令。

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

    我是Catel 的开发者之一,这是一个开源的 MVVM 框架,它也支持命令。你可以找到更多关于Catel commands的信息。

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多