【发布时间】:2011-04-01 16:47:25
【问题描述】:
我有一个绑定到可观察对象集合的数据网格。我想要做的是有一个按钮,它将执行对象的方法,该方法表示被单击的按钮的行。所以我现在拥有的是这样的:
<DataGridTemplateColumn Header="Command">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="cmdCommand" Click="{Binding Command}"
Content="Command"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
哪个不行,报如下错误:
Click="{绑定命令}" 无效。 “{Binding Command}”不是有效的事件处理程序方法名称。只有生成类或代码隐藏类的实例方法才有效。
我查看了命令绑定,但看起来它最终会转到单个外部命令而不是绑定到行的对象。我让它在后面的代码上使用事件处理程序工作,然后将其路由到绑定到所选行的项目(因为单击按钮时该行被选中)但这似乎是一种糟糕的处理方式,我假设我'我只是在这里遗漏了一些东西。
【问题讨论】:
-
后面代码中的“命令”是什么?该命令应该实现什么?选择一行?
-
在这种情况下,“命令”不在后面的代码中。我试图把它降低到解释所需的最低限度,所以在这种情况下,它只是我绑定到数据网格的类的一个方法(所以它会是 myObject.Command();)。
-
至于它应该实现什么,现在只是为了测试它只是更新对象中触发 propertychanged 事件的另一个属性。
-
我创建了一个库,允许您使用以下语法
{BindTo SaveObject}。你可以在这里找到它:simplygoodcode.com/2012/08/simpler-wpf-binding.html -
令我惊讶的是,这是响应 MVVM 中的按钮单击所必需的。他们有没有说明它与其他绑定不同的原因?
标签: wpf