C# AddNew或EditItem事务期间不允许延迟刷新
我有一个包含2个数据网格的窗口。如果我从第一个DataGrid中的一个特定列单击到另一个DataGrid中的任何列,那么我会得到错误 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
<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事件,以取消或提交任何挂起的编辑。