【发布时间】:2011-01-26 10:16:22
【问题描述】:
我正在使用 Silverlight 3 开发应用程序。在我的应用程序中,我有一个布局网格(名为“LayoutGrid”),其中有一个带有 DataGridTemplateColumns 的 DataGrid(名为“PART_datagrid”)。 LayoutGrid 设置了一个 DataContext,其中有一个 Ladders 列表作为属性。此梯形图列表设置为 PART_datagrid 的 ItemsSource。
<Grid x:Name="LayoutRoot">
<DataGrid x:Name="PART_datagrid" ItemsSource="{Binding Ladders}">
...
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="DeleteLadder" Click.Command="{Binding ElementName=LayoutRoot, Path=DataContext.DeleteLadderCommand}" />
现在,在其中一个 DataGridTemplateColumns 中,我有一个按钮,它应该调用 LayoutGrid 的 DataContext 中存在的命令。所以我在我的 DataTemplate 按钮上尝试了 Element-To-Element 绑定,如下所示
<Button Name="DeleteLadder" Click.Command="{Binding ElementName=LayoutRoot, Path=DataContext.DeleteLadderCommand}" />
但这似乎不起作用。我想要实现的是使用命令在父 DataContext 级别处理删除 DataGrid 行的事件。
有人可以建议我如何进行此操作吗?
提前谢谢...
【问题讨论】:
-
它“似乎不起作用”的方式是什么?
-
你在使用 MVVM 框架吗?
-
是的,我正在使用 MVVM 框架。我附加到按钮的 Click 命令(称为 DeleteCommand)的命令不会被调用。因此我说它不起作用。在我看来,LayoutRoot 的 DataContext 没有传递给 DataTemplate,因此按钮的绑定可能不起作用。
标签: silverlight-3.0 datagrid binding datatemplate celltemplate