在 MVVM 中的 Datagrid 中绑定 WPF 组合框不保存更改

Posted

技术标签:

【中文标题】在 MVVM 中的 Datagrid 中绑定 WPF 组合框不保存更改【英文标题】:Binding WPF Combobox within Datagrid in MVVM not saving changes 【发布时间】:2011-06-24 15:32:13 【问题描述】:

我有一个使用 MVVM 设计模式定义的 DataGrid:

<DataGrid Margin="10" Height="385" Width="1000" ItemsSource="Binding Inspection.Details" SelectedItem="Binding SelectedDetail, Mode=TwoWay" AutoGenerateColumns="False" CanUserAddRows="False" x:Name="grdDetails" CanUserSortColumns="True" HorizontalScrollBarVisibility="Visible" CanUserResizeColumns="True">
     <DataGrid.Columns>
        <DataGridTemplateColumn   Header="Code" Width="120" SortMemberPath="MFGCode">
          <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
             <Grid>
                 <ComboBox FontSize="20" ItemsSource="Binding RelativeSource=RelativeSource Mode=FindAncestor,AncestorType=x:Type UserControl,Path=DataContext.MFGCodes" DisplayMemberPath="Value" SelectedValuePath="Value"  SelectedValue="Binding MFGCode,Mode=TwoWay"></ComboBox>
             </Grid>
           </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
   </DataGrid.Columns>
</DataGrid>

通过绑定到 ViewModel 中的 ObservableCollection,Combobox 被正确填充。还有其他列(此处未显示)正确绑定到视图模型中定义的检查上的各种属性。

在初始加载时,组合框正确绑定到代表 MFGCode 的 InspectionDetail 上的选定值。

唯一的问题是,当我更改组合框中的值时,新的 SelectedValue 并没有像我对 TwoWay 绑定所期望的那样保存到 SelectedDetail 的 MFGCode 属性中。

我可以提供 ViewModel 代码,因为它会有所帮助,请问。

谢谢!

【问题讨论】:

【参考方案1】:

试试这个

SelectedValue="Binding MFGCode,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged"

【讨论】:

以上是关于在 MVVM 中的 Datagrid 中绑定 WPF 组合框不保存更改的主要内容,如果未能解决你的问题,请参考以下文章

将wpf datagrid导出为自定义Excel CSV文件

WPF MVVM 将 ComboBox 绑定到 Datagrid 选定项

WPF MVVM DataGrid Button Command绑定

绑定 datagrid 列可见性 MVVM

当 MVVM 中的属性更改时通知可观察集合

如何使用 MVVM 应用程序在 WPF 中以编程方式设置 DataGrid 的选定项?