C# MVVM Light DataGrid delete命令
我的项目的简短结构是(使用MVVM Light Toolkit):C# MVVM Light DataGrid delete命令,c#,wpf,mvvm,wpfdatagrid,mvvm-light,C#,Wpf,Mvvm,Wpfdatagrid,Mvvm Light,我的项目的简短结构是(使用MVVM Light Toolkit): 使用DataGrid查看(UserControl) 视图模型 使用ValueObjects进行数据访问 分贝 我正在使用ObservableCollection将数据绑定到我的DataGrid, 但我坚持删除Datagrid中的一行并将其保存到数据库中 在旧的项目中,我使用了CommandManager.PreviewExecuted event from System.Windows.Input,并在那里检查了DataGr
- 使用DataGrid查看(UserControl)
- 视图模型
- 使用ValueObjects进行数据访问
- 分贝
if(e.Command == DataGrid.DeleteCommand)
{
DataAccessContext.Sample.DeleteOnSubmit(data);
DataAccessContext.SubmitChanges();
}
我已经在谷歌上搜索了几个小时,但没有找到正确的方法。
我尝试使用PassEventArgsToCommand,但事件DataGrid.DeleteCommand或CommandManager.PreviewExecuted未启动,SelectionChangedCommand工作正常,但我不知道如何检查重要的DataGrid.DeleteCommand
这是我的xaml:
<DataGrid x:Name="dataGrid1" ItemsSource="{Binding Items}" CanUserAddRows="True" CanUserDeleteRows="True" AutoGenerateColumns="False" Height="391" HorizontalAlignment="Left" VerticalAlignment="Top" Width="auto" Margin="2,0,0,0" RowEditEnding="dataGrid1_RowEditEnding" CellEditEnding="dataGrid1_CellEditEnding">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand
Command="{Binding SelectionChangedCommand,Mode=OneWay}"
CommandParameter="{Binding SelectedItems,ElementName=dataGrid1}">
</cmd:EventToCommand>
</i:EventTrigger>
<i:EventTrigger EventName="DataGrid.DeleteCommand"> //I've also tried PreviewExecuted and CommandManager.PreviewExecuted as EventName
<cmd:EventToCommand
Command="{Binding SelectedItems,Mode=OneWay}"
CommandParameter="{Binding ExecutedRoutedEventArgs, ElementName=dataGrid1}"
PassEventArgsToCommand="True"
></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged}" Width="auto"></DataGridTextColumn>
<DataGridTextColumn Header="Vorname" Binding="{Binding Surname, UpdateSourceTrigger=PropertyChanged}" Width="auto"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
//我还尝试了PreviewExecuted和CommandManager.PreviewExecuted作为EventName
感谢您的回答和问候尝试禁用DataGrid上的delete,并将delete键连接到命令(通过KeyBinding),该命令将保存行并从源集合中删除行 看看这个