在 WPF 中使用 DataContext 作为 CommandParameter

Posted

技术标签:

【中文标题】在 WPF 中使用 DataContext 作为 CommandParameter【英文标题】:Use DataContext as CommandParameter in WPF 【发布时间】:2011-01-20 03:45:43 【问题描述】:

我想将当前 DataContext(它是 ViewModel 的一个实例)作为 WPF 按钮上的 CommandParameter 传递。我应该使用什么语法?

<Button 
  x:Name="btnMain"
  Command="infra:ApplicationCommands.MyCommand"
  CommandParameter="Binding ???"
 />

【问题讨论】:

请注意这里的顺序很重要。 CommandParameter 必须在 Command 之前,否则您只会看到 null 作为参数传递。 【参考方案1】:

一个空的Binding,没有路径,直接绑定到DataContext,所以

Binding

足以让它工作!你的例子:

<Button 
  x:Name="btnMain"
  Command="infra:ApplicationCommands.MyCommand"
  CommandParameter="Binding"
 />

【讨论】:

这太简单了,太棒了。不错:)【参考方案2】:
<Button 
   x:Name="btnMain"
   Command="infra:ApplicationCommands.MyCommand"
   CommandParameter="Binding" 
/>

只要按钮位于带有 DataContext 的项目的可视化树中

【讨论】:

以上是关于在 WPF 中使用 DataContext 作为 CommandParameter的主要内容,如果未能解决你的问题,请参考以下文章

数据绑定使用DataContext作为Binding的Source

WPF自动从上下文列出项目

wpf datagrid observablecollection

WPF入门——DataContext

WPF,将 DataContext 设置为同一类的属性

当父类型可以不同时,如何在 wpf 中访问父的 DataContext?