我有一个使用 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>
通过绑定(bind)到 ViewModel 中的 ObservableCollection,组合框已正确填充。还有其他列(此处未显示)已正确绑定(bind)到 View 模型中定义的检查的各种属性。
初始加载时,组合框正确绑定(bind)到代表 MFGCode 的 InspectionDetail 上的选定值。
唯一的问题是,当我更改组合框中的值时,新的 SelectedValue 不会像我期望的那样通过 TwoWay 绑定(bind)保存到 SelectedDetail 的 MFGCode 属性中。
我可以提供 ViewModel 代码,因为它会很有帮助,只需询问即可。
谢谢!
最佳答案
试试这个
SelectedValue="{Binding MFGCode,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
关于c# - 在 MVVM 中的 Datagrid 内绑定(bind) WPF 组合框不保存更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6470127/