我有一个使用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。还有其他列(此处未显示)正确绑定到视图模型中定义的检查的各种属性。
在初始加载时,组合框CORRECTLY绑定到表示MFGCode的InspectionDetail上的selectedvalue。
唯一的问题是,当我更改组合框中的值时,新的SelectedValue不会像我期望的使用TwoWay绑定一样保存到SelectedDetail的MFGCode属性。
我可以提供ViewModel代码,因为它会有所帮助,只需询问。
谢谢!
答案 0 :(得分:5)
试试这个
SelectedValue="{Binding MFGCode,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"