C# AddNew或EditItem事务期间不允许延迟刷新

C# AddNew或EditItem事务期间不允许延迟刷新,c#,wpf,mvvm,datagrid,C#,Wpf,Mvvm,Datagrid,我有一个包含2个数据网格的窗口。如果我从第一个DataGrid中的一个特定列单击到另一个DataGrid中的任何列,那么我会得到错误 AddNew或EditItem事务期间不允许延迟刷新 这里出了什么问题 第一个数据网格是 <DataGrid x:Name="FirstDataGrid" ItemsSource="{Binding Parts, Mode=TwoWay}" SelectedItem="{Binding SelectedPart, Mo

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

AddNew或EditItem事务期间不允许延迟刷新

这里出了什么问题

第一个数据网格是

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

第二个数据网格并不重要,因为我可以单击任何列来产生错误。

我自己解决了这个问题

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

IsReadOnly="True"
到WPF列定义。

我自己解决了它

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

IsReadOnly="True"

到WPF列定义。

有趣的是,您不能复制标志丰富的问题!这似乎是以前在此处和此处提出的问题:。我阅读了这些,但这并没有解决我的问题。从这些帖子中,您的第一个Datagrid在单击其列时似乎已处于编辑状态。您可以将属性绑定到其SelectedItem并(从上面的第二个链接)“将所选项目强制转换为IEditableObject并在其上调用EndEdit,或调用grids CancelEdit方法”。或者将命令连接到类似于第一个DataGrid的LostFocus事件的事件,以取消或提交任何挂起的编辑。有趣的是,您不能复制标志悬赏问题!这似乎是以前在此处和此处提出的问题:。我阅读了这些,但这并没有解决我的问题。从这些帖子中,您的第一个Datagrid在单击其列时似乎已处于编辑状态。您可以将属性绑定到其SelectedItem并(从上面的第二个链接)“将所选项目强制转换为IEditableObject并在其上调用EndEdit,或调用grids CancelEdit方法”。或者将命令连接到第一个DataGrid的LostFocus事件,以取消或提交任何挂起的编辑。