我使用WPF的MVVM模式构建程序如下:
<DataGridTemplateColumn Header="操作状态" Width="80*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<Button Content="编辑" Name="Bianji" Tag="{Binding}" Command="{Binding DataContext.EditDataCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding SelelctedItem,ElementName=Datagrid}"/>
<Button Content="删除" Name="Shangchu" Tag="{Binding}" Command="{Binding DataContext.DeleteDataCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding SelelctedItem,ElementName=Datagrid}" Foreground="#FFE01919" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
当我选中多条时,在点击某一行的编辑按钮,传出的值是选中的第一行,而不是当前点击编辑的那一行。
解决方法是修改传出的参数,不传SelectedItem,而是Datacontext
<Button x:Name="EditButton" Command="{Binding DataContext.EditDataCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding DataContext,ElementName=EditButton}"/>
<Button x:Name="DeleteButton" Command="{Binding DataContext.DeleteDataCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding DataContext,ElementName=DeleteButton}">