在我的MVVM项目中,我使用我的Datagrid的ItemSource和ObservableCollection,而对于SelectItem,使用objet类型BankAcount:
在我的虚拟机中:
[RaisePropertyChanged]
public virtual BankAccount SelectedBankAccount { get; set; }
[RaisePropertyChanged]
public virtual ObservableCollection<BankAccount> BankAccounts { get; set; }
在我的视图中
<DataGrid x:Name="Datagrid" Style="{DynamicResource DataGridStyle}" SelectedItem="{Binding SelectedBankAccount}" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding BankAccounts}">
<DataGrid.Columns>
<UC:DataGridEditColumn/>
<DataGridTextColumn Header="Code" Binding="{Binding Path=Code}" />
<DataGridTextColumn Header="Libellé" Binding="{Binding Path=Wording}" />
<DataGridTextColumn Header="Compte Epargne" Binding="{Converter:DisplayBoolToYesNoConverter Investment,Oui,Non}"/>
</DataGrid.Columns>
</DataGrid>
当我从我的VM改变我的对象时,我希望它不会改变我的收藏......
答案 0 :(得分:0)
请改进您的问题,在您第一次评论时,它变得清晰:您有一个主细节绑定:当您在数据网格中选择一行时,该行的字段在侧面板中变得可编辑。您不希望在用户通过按某种“确定”按钮验证编辑之前更新de datagrid中的数据。
有几种方法:
SelectedBankAccount
填充其属性。一旦用户验证了他的更改,就将单独的viewmodel的属性复制回datagrid绑定的属性。UpdateSourceTrigger=Explicit
。做一些关于如何使这项工作的阅读,因为你现在必须在代码中触发对数据网格的更新。