c# - 在 MVVM 中的 Datagrid 内绑定(bind) WPF 组合框不保存更改

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

通过绑定(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/

相关文章:

c# - Visual Studio 2017 中缺少创建单元测试上下文菜单选项?

c# - 将 WPF 窗口停靠到屏幕窗口的左侧/右侧 7/8

data-binding - 为什么绑定(bind)刷新延迟到委托(delegate)命令完成? (MVVM)

wpf - 从 VM 的数据中提取

ios - 代码行数和文件数;哪一个增加了应用程序的大小?

c# - EntityType 'Worker' 没有定义键。定义此 EntityType 的键

c# - 并行 LINQ - .Select() + .ForAll() 返回奇怪的结果

c# - 比较发布版本的产品

c# - 谁能给我一个关于 'just for fun' 项目 [wpf] 的想法?

c# - WPF System.OutOfMemoryException 系统.Windows.Automation.Peers.AutomationPeer.UpdateSubtree