C# System.Windows.Data错误:17:RowNotInTableException

C# System.Windows.Data错误:17:RowNotInTableException,c#,wpf,data-binding,C#,Wpf,Data Binding,我试图在运行时将DataTable绑定到WPF DataGrid。代码如下所示: DataTable c_tblData; public MainWindow() { InitializeComponent(); c_tblData = new DataTable("tblData"); c_tblData.Columns.Add("Id", typeof(int)); c_tblData.Columns.Add("Description", typeof(st

我试图在运行时将DataTable绑定到WPF DataGrid。代码如下所示:

DataTable c_tblData;

public MainWindow()
{
    InitializeComponent();
    c_tblData = new DataTable("tblData");
    c_tblData.Columns.Add("Id", typeof(int));
    c_tblData.Columns.Add("Description", typeof(string));
    c_tblData.Columns.Add("OK", typeof(bool));
    dgrData.ItemsSource = c_tblData.DefaultView;
 }
我没有其他代码。XAML也非常简单:

<Window x:Class="Test_DataGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test_DataGrid"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid Name="dgrData" />
    </Grid>
</Window>

为什么我会出现这个错误,我如何才能消除它?我对这个话题做了广泛的搜索,但没有得出结论。

你可以放心地忽略这个例外。它是无害的,已经为你处理过了

当您尝试对不在
DataTable
中的
DataRow
执行操作,但无法真正控制
DataGrid
控件向
DataTable
添加或删除行的方式和时间时,会引发异常,除非您以某种方式覆盖
ESC
按键的行为:

private void dgrData_PreviewKeyDown(object sender, KeyEventArgs e)
{
    e.Handled = e.Key == Key.Escape;
}

但实际上没有必要这样做。

您可以放心地忽略此异常。它是无害的,已经为你处理过了

当您尝试对不在
DataTable
中的
DataRow
执行操作,但无法真正控制
DataGrid
控件向
DataTable
添加或删除行的方式和时间时,会引发异常,除非您以某种方式覆盖
ESC
按键的行为:

private void dgrData_PreviewKeyDown(object sender, KeyEventArgs e)
{
    e.Handled = e.Key == Key.Escape;
}

但实际上没有必要这样做。

覆盖建议中的行为实际上可以防止出现错误。但是:我不能再中止单元格编辑或行添加。因此,这不是解决方案。。。当然我可以忽略这个错误,但我觉得它很烦人,我真的很想摆脱它。这就是我的意思。不要担心这个异常,因为它是无害的,与您的代码没有任何关系。你应该关注更重要的事情:)在你的建议中覆盖行为实际上可以防止错误的出现。但是:我不能再中止单元格编辑或行添加。因此,这不是解决方案。。。当然我可以忽略这个错误,但我觉得它很烦人,我真的很想摆脱它。这就是我的意思。不要担心这个异常,因为它是无害的,与您的代码没有任何关系。你应该关注更重要的事情:)