Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVVM环境中的WPF Datagrid RowEditEnding_Wpf_Mvvm_Datagrid_Prism - Fatal编程技术网

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>