我一直在尝试使用捕获用户输入到数据网格中的值

<b:Interaction.Triggers>
    <b:EventTrigger EventName="RowEditEnding">
        <b:InvokeCommandAction  Command="{Binding ReleaseRowEditEndingCommand}" CommandParameter="{Binding SelectedRelease}"/>
    </b:EventTrigger>

但这是行不通的,现在我了解了关于StackOverflow的this文章。在这种情况下,似乎所有提出的解决方案都是基于直接调用与引发的事件匹配的方法签名的
private void OnRowEditEnding(object sender, DataGridRowEditEndingEventArgs e)

有没有人在MVVM情况下取得过行编辑后的值?所有解决方案似乎都将事件与XAML紧密绑定(bind),如果可能的话,我想避免这种情况。

最佳答案

该解决方案实际上比我想象的要容易。我更改了XAML,现在可以在 View 模型上的RowEditEnding事件中获取值。这是datagrid上数据列的前面:

 <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>

关于MVVM环境中的WPF Datagrid RowEditEnding,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7326206/

10-09 00:40