MVVM环境中的WPF Datagrid RowEditEnding
我一直在尝试通过使用MVVM环境中的WPF Datagrid RowEditEnding,wpf,mvvm,datagrid,prism,Wpf,Mvvm,Datagrid,Prism,我一直在尝试通过使用 <b:Interaction.Triggers> <b:EventTrigger EventName="RowEditEnding"> <b:InvokeCommandAction Command="{Binding ReleaseRowEditEndingCommand}" CommandParameter="{Binding SelectedRelease}"/> </b:EventTrigge
<b:Interaction.Triggers>
<b:EventTrigger EventName="RowEditEnding">
<b:InvokeCommandAction Command="{Binding ReleaseRowEditEndingCommand}" CommandParameter="{Binding SelectedRelease}"/>
</b:EventTrigger>
是否有人在MVVM情况下完成了获取值后行编辑?所有的解决方案似乎都将事件紧密地绑定到XAML,如果可能的话,我希望避免这种情况。您可以尝试将数据包装到ListCollectionView中,并将DataGrid绑定到ListCollectionView。然后,在ViewModel中,挂接ListCollectionView.CurrentChangeing事件以在移动到新行之前处理更改。解决方案实际上比我想象的要简单。我更改了XAML,现在可以在视图模型的RowEditEnding事件中获取值。以下是datagrid上数据列的详细信息:
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Is Paid" Binding="{Binding IsPaid, Mode=TwoWay}" />
<DataGridTextColumn Header="Amount" Binding="{Binding Amount, Mode=TwoWay}" />
</DataGrid.Columns>
之后
仅用于记录更新sourcetrigger=LostFocus也会起作用。当您使用字符串格式化并且不希望混乱时,它非常有用
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Is Paid" Binding="{Binding IsPaid, Mode=TwoWay}" />
<DataGridTextColumn Header="Amount" Binding="{Binding Amount, Mode=TwoWay}" />
</DataGrid.Columns>
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Is Paid" Binding="{Binding IsPaid, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Amount" Binding="{Binding Amount, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>