C# 使用MVVM更改DataGrid行时将更改应用于模型
我有一个简单的场景,我有一个绑定到ObservableCollection的DataGrid,我希望用户能够动态添加一个新的ComplexType项(这意味着一行)。我的意思是,只要用户完成了行数据的输入,数据模型就需要更新。 问题是,当行已更改或添加时,不会调用ViewModel的绑定。有人知道如何在ViewModel中处理这种情况吗。我的直觉告诉我在MVVM中应该很容易,但我被卡住了! 这是我的xaml:C# 使用MVVM更改DataGrid行时将更改应用于模型,c#,wpf,xaml,mvvm,datagrid,C#,Wpf,Xaml,Mvvm,Datagrid,我有一个简单的场景,我有一个绑定到ObservableCollection的DataGrid,我希望用户能够动态添加一个新的ComplexType项(这意味着一行)。我的意思是,只要用户完成了行数据的输入,数据模型就需要更新。 问题是,当行已更改或添加时,不会调用ViewModel的绑定。有人知道如何在ViewModel中处理这种情况吗。我的直觉告诉我在MVVM中应该很容易,但我被卡住了! 这是我的xaml: <DataGrid x:Name="gd_Users" CanUserDele
<DataGrid x:Name="gd_Users" CanUserDeleteRows="True" CanUserAddRows="True" CanUserAddRows="True" AutoGenerateColumns="False" ItemsSource="{Binding UserCollection,Mode=TwoWay}" SelectedItem="{Binding SelectedUser}" Margin="1,5" Grid.Column="1">
<DataGrid.Columns>
<DataGridTextColumn Header="header1" Width="50" Binding="{Binding u_Code}"/>
<DataGridTextColumn Header="Header2" Width="100" Binding="{Binding u_FirstName}"/>
<DataGridTextColumn Header="header3" Width="150" Binding="{Binding u_LastName}" />
</DataGrid.Columns>
</DataGrid>
注意:我不想在代码隐藏中使用诸如“RowEditEnding”之类的事件您需要在数据行的视图模型中实现:
public class RowViewModel : IEditableObject
{
public int Id { get; set; }
public string Name { get; set; }
public void BeginEdit()
{
}
public void CancelEdit()
{
}
public void EndEdit()
{
// this method is called, when user has ended editing
// TODO: call service layer to update model
}
}
DataGrid
知道这个接口,如果VM实现了它,DataGrid
就会调用它的方法。这很有魅力,而且很容易实现!谢谢你,伙计