【发布时间】: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 代码,因为它会有所帮助,请问。
谢谢!
【问题讨论】:
标签: c# wpf mvvm combobox wpfdatagrid