在 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 选定项