Связывание WPF Combobox в Datagrid в MVVM без сохранения изменений - PullRequest
2 голосов
/ 24 июня 2011

У меня есть DataGrid, определенный как таковой с помощью шаблона проектирования MVVM:

<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>

Поле Combobox заполняется правильно, путем привязки к ObservableCollection в ViewModel.Существуют также другие столбцы (не представленные здесь), которые правильно привязаны к различным свойствам инспекции, определенной в модели представления.

При начальной нагрузке выпадающий список ПРАВИЛЬНО связывается с выбранным значением в InspectionDetail, представляющем MFGCode.

Единственная проблема заключается в том, что при изменении значения в выпадающем списке новое значение SelectedValue небудучи сохраненным в свойстве MFGCode SelectedDetail, как и следовало ожидать с привязкой TwoWay.

Я могу предоставить код ViewModel, как это было бы полезно, просто спросите.

Спасибо!

1 Ответ

5 голосов
/ 24 июня 2011

попробуйте

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

...