在MVVM中的Datagrid中绑定WPF Combobox而不保存更改

时间:2011-06-24 15:32:14

标签: c# wpf mvvm combobox wpfdatagrid

我有一个使用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代码,因为它会有所帮助,只需询问。

谢谢!

1 个答案:

答案 0 :(得分:5)

试试这个

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