在AddNew或EditItem事务期间不允许DeferRefresh

时间:2015-03-28 16:13:50

标签: c# wpf mvvm datagrid

我有一个包含2个DataGrids的窗口。如果我从第一个DataGrid中的一个特定列单击到另一个DataGrid的任何列,那么我会收到错误

  

在AddNew或EditItem事务期间不允许使用DeferRefresh

这里出了什么问题?

第一个DataGrid是

<DataGrid x:Name="FirstDataGrid"
          ItemsSource="{Binding Parts, Mode=TwoWay}"
          SelectedItem="{Binding SelectedPart, Mode=TwoWay}"
          CellEditEnding="DataGrid_OnCellEditEnding" >
     <i:Interaction.Behaviors>
          <views:ScrollIntoViewBehavior />
     </i:Interaction.Behaviors>
          <DataGrid.Resources>
               <Style TargetType="{x:Type DataGridCell}">
                   <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown"></EventSetter>
               </Style>
          </DataGrid.Resources>
      <DataGrid.Columns>
          <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ItemsControl ItemsSource="{Binding Identifications, Mode=OneWay}">
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <StackPanel Orientation="Horizontal"/>
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Margin="5,0,0,0">
                                            <Hyperlink NavigateUri="{Binding ArticleNumber, Mode=OneWay}" 
                                                        Command="{Binding ElementName=PartDataGrid, Path=DataContext.OpenIdentificationCommand}" CommandParameter="{Binding}" >                                    
                                                <TextBlock Text="{Binding ArticleNumber, Mode=OneWay}"/>
                                            </Hyperlink>
                                        </TextBlock>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
      </DataGrid.Columns>
</DataGrid>

第二个DataGrid并不重要,因为我可以点击任何列来产生错误。

1 个答案:

答案 0 :(得分:3)

我自己解决了。

导致问题的列是只读的。那么为什么还要允许编辑模式呢?这显然是错误的。我通过添加

修复了这个问题
IsReadOnly="True"

到WPF列定义。