C# 使用“删除”按钮删除WPF数据网格中的行
我在WPF应用程序窗口中有一个数据网格,数据绑定到一个可观察的集合。在DataGrid中,我设置了属性C# 使用“删除”按钮删除WPF数据网格中的行,c#,wpf,C#,Wpf,我在WPF应用程序窗口中有一个数据网格,数据绑定到一个可观察的集合。在DataGrid中,我设置了属性CanUserDeleteRows=True,我可以通过按键盘上的delete按钮删除该行 这在我看来不是很直观。我想保留一个额外的列,其中有删除按钮,按下该行应被删除。(类似于在ASP.NET的ItemTemplate中可以执行的操作) 如何通过使用datagrid本身内部的按钮获得删除行的功能您可以添加一个DataGridTemplateColumn,其中包含一个调用删除命令的按钮。Da
CanUserDeleteRows=True
,我可以通过按键盘上的delete按钮删除该行
这在我看来不是很直观。我想保留一个额外的列,其中有删除按钮,按下该行应被删除。(类似于在ASP.NET的ItemTemplate中可以执行的操作)
如何通过使用datagrid本身内部的
按钮
获得删除行的功能您可以添加一个DataGridTemplateColumn
,其中包含一个调用删除
命令的按钮。DataGrid将处理Delete命令并删除该行
<DataGridTemplateColumn Header="Actions" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Remove Row" Command="Delete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
您必须将DataGridTemplateColumn添加到网格中。差不多
<DataGrid x:Name="dgrQuestions" AutoGenerateColumns="False" Height="224" HorizontalAlignment="Left" Margin="42,73,0,0" VerticalAlignment="Top" Width="663" ItemsSource="{Binding QueList}" CanUserAddRows="True" CanUserDeleteRows="True">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Delete" Width="75">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Tag="{Binding}" Click="OnDelete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Qu" Binding="{Binding Path=Que, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="An" Binding="{Binding Path=Ans, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Hi" Binding="{Binding Path=Hi, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
这让我们知道所有按钮的启用状态都跟随所选行。如果启用
CanUserAddRows
并选择最后一行,则视图中所有按钮的启用状态将被禁用。你知道怎么修吗?
<DataGrid x:Name="dgrQuestions" AutoGenerateColumns="False" Height="224" HorizontalAlignment="Left" Margin="42,73,0,0" VerticalAlignment="Top" Width="663" ItemsSource="{Binding QueList}" CanUserAddRows="True" CanUserDeleteRows="True">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Delete" Width="75">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Tag="{Binding}" Click="OnDelete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Qu" Binding="{Binding Path=Que, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="An" Binding="{Binding Path=Ans, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Hi" Binding="{Binding Path=Hi, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"