【问题标题】:WPF DataGridComboBoxColumn Binding: 'DeferRefresh' is not allowed during an AddNew or EditItem transaction'?WPF DataGridComboBoxColumn 绑定:在 AddNew 或 EditItem 事务期间不允许“DeferRefresh”?
【发布时间】:2014-09-03 15:44:42
【问题描述】:

在 WPF 网格中有一个 DataGridComboBoxColumn,但存在一些绑定问题。我可以成功绑定到 ObservableCollection<String> 属性,但是当我尝试绑定到 EF 实体表的 ObservableCollection<T> 中的列时,尽管绑定的列是 varchar,但出现异常:

'DeferRefresh' is not allowed during an AddNew or EditItem transaction'

这是我的 Xaml:

<DataGrid Margin="5" AutoGenerateColumns="False" ItemsSource="{Binding MembershipsCollection}">
   <DataGrid.Columns>
      <DataGridComboBoxColumn Header="Region" Width="SizeToHeader" DisplayMemberPath="{Binding RegionShortCodeCollection}">
        <DataGridComboBoxColumn.ElementStyle>
             <Style>
                 <Setter Property="ComboBox.ItemsSource" Value="{Binding DataContext.RegionShortCodeCollection, RelativeSource={RelativeSource AncestorType={x:Type vm:AccountsViewModel}}}" />
              </Style>
             </DataGridComboBoxColumn.ElementStyle>
          <DataGridComboBoxColumn.EditingElementStyle>
               <Style>
                  <Setter Property="ComboBox.ItemsSource" Value="{Binding DataContext.RegionShortCodeCollection, RelativeSource={RelativeSource AncestorType={x:Type v:AccountsView}}}" />
                </Style>
             </DataGridComboBoxColumn.EditingElementStyle>
           </DataGridComboBoxColumn>
         <DataGridTextColumn Header="ProductCode" Binding="{Binding Path=ProductCode}" Width="SizeToHeader"/>                                                                  
        </DataGrid.Columns>
       </DataGrid>

& 我的 ObservableCollection&lt;T&gt; 在 ViewModel 中。这是由构造函数调用的方法填充的:

private ObservableCollection<String> _RegionShortCodeCollection;
public ObservableCollection<String> RegionShortCodeCollection
{
    get { return _RegionShortCodeCollection; }
    set
    {
        _RegionShortCodeCollection = value;
        OnPropertyChanged("RegionShortCodeCollection");
    }
}

关于为什么一个集合会发生这种情况而不是另一个集合的任何想法? 谢谢

【问题讨论】:

    标签: c# wpf entity-framework xaml


    【解决方案1】:

    我解决了这个问题。底层数据库表上有一个“插入”触发器,阻止了应用程序的插入。我将触发器更改为“AFTER INSERT”,它允许实体框架在调用触发器之前保留更改。

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多