如何将DataGrid中绑定的实体作为Button的CommandParameter传递

时间:2012-09-20 00:53:58

标签: wpf data-binding wpfdatagrid

我有以下DataGrid

<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Registro" Binding="{Binding NumeroRegistro}"    />
<DataGridTextColumn Header="Nome" Binding="{Binding Nome}" Width="*" />
<DataGridTextColumn Header="Login" Binding="{Binding Login}" Width="200" />
<DataGridTemplateColumn Width="30"  >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Name="btnEditarFisioterapeuta" CommandParameter="{Binding Id}" Click="btnEditarFisioterapeuta_Click">
                <Rectangle>
                    <Rectangle.Fill>
                        <VisualBrush Visual="{StaticResource appbar_page_edit}" />
                    </Rectangle.Fill>
                </Rectangle>
            </Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

并且,在后面的代码中,我填充数据网格的项目,如此

dgFisioterapeuta.ItemsSource = listOfEntities;

没什么特别的。请注意,我绑定了Id中实体的Button,因此在后面的代码中我可以获取此Id并编辑实体。我想知道,如果整个DataGrid绑定到实体列表,为什么不将整个实体作为CommandParameter传递?

有办法吗?

换句话说,我想改变一行

<Button Name="btnEditarFisioterapeuta" CommandParameter="{Binding Id}" >

这样的事情。

<Button Name="btnEditarFisioterapeuta" CommandParameter="{Binding The_binding_that_represents_the_entity_of_this_row}" >

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做,这很简单:

<Button Name="btnEditarFisioterapeuta" CommandParameter="{Binding}">

(请注意,当您编写{Binding Id}这是{Binding Path=Id}的简写时,为了获得整个实体,您只需排除路径。)