我有以下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}" >
答案 0 :(得分:1)
是的,你可以这样做,这很简单:
<Button Name="btnEditarFisioterapeuta" CommandParameter="{Binding}">
(请注意,当您编写{Binding Id}
这是{Binding Path=Id}
的简写时,为了获得整个实体,您只需排除路径。)