绑定按钮单击方法

我有一个绑定到可观察对象集合的数据网格。我想做的是有一个按钮,该按钮将执行表示被单击的按钮行的对象的方法。所以我现在所拥有的是这样的:


            <DataGridTemplateColumn Header="Command">

                <DataGridTemplateColumn.CellTemplate>

                    <DataTemplate>

                        <Button Name="cmdCommand" Click="{Binding Command}" 

                                Content="Command"/>

                    </DataTemplate>

                </DataGridTemplateColumn.CellTemplate>

            </DataGridTemplateColumn>

哪个不起作用并报告以下错误:


Click =“ {Binding Command}”无效。“ {Binding Command}”不是有效的事件处理程序方法名称。仅生成的类或代码隐藏类上的实例方法有效。


我已经看过命令绑定,但是看起来最终将只使用一个外部命令,而不是绑定到该行的对象。我在后面的代码上使用事件处理程序来工作,然后将其路由到绑定到所选行的项目(因为单击按钮时该行被选中),但这似乎是处理此问题的较差方法,我认为我我只是在这里缺少一些东西。


慕容森
浏览 668回答 3
3回答

慕妹3242003

您有各种各样的可能性。最简单最丑陋的是:XAML<Button Name="cmdCommand" Click="Button_Clicked" Content="Command"/>&nbsp;背后的代码private void Button_Clicked(object sender, RoutedEventArgs e) {&nbsp;&nbsp; &nbsp; FrameworkElement fe=sender as FrameworkElement;&nbsp; &nbsp; ((YourClass)fe.DataContext).DoYourCommand();&nbsp; &nbsp; &nbsp;}&nbsp;另一个解决方案(更好)是在上提供ICommand属性YourClass。该命令已经具有对YourClass-object 的引用,因此可以对该类执行操作。XAML<Button Name="cmdCommand" Command="{Binding YourICommandReturningProperty}" Content="Command"/>因为在编写此答案期间,发布了许多其他答案,所以我不再写更多。如果您对我的一种显示方式感兴趣,或者您认为我做错了,请发表评论。
打开App,查看更多内容
随时随地看视频慕课网APP