WPF DataGridComboBoxColumn绑定:在AddNew或EditItem事务期间不允许'DeferRefresh'?

时间:2014-09-03 15:44:43

标签: c# wpf entity-framework xaml

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。有一个&#39; INSERT&#39;触发基础数据库表,阻止从应用程序插入。我将触发器更改为“插入后”。允许实体框架在调用触发器之前保持更改。