如何将DataTable绑定到Datagrid

Cyg*_*ygu 25 c# wpf datatable datagrid

我有一个问题绑定DataTable到a DataGrid.我已经搜索过解决方案但是无法摆脱错误.使用WindowsForms时绑定工作正常,所以这DataTable是正确的.我只是不能将它绑定到WPF-DataGrid.

错误消息:未处理AmbiguousMatchException
源:mscorlib

我已经设置了新项目来摆脱任何不良链接等.

XAML的代码:

<DataGrid x:Name="grid1" Margin="10" ItemsSource="{Binding}" 
          AutoGenerateColumns="True"></DataGrid>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过跟随C#-Code了:

grid1.ItemsSource = dt.DefaultView;
Run Code Online (Sandbox Code Playgroud)

要么

grid1.DataContext = dt.DefaultView;
Run Code Online (Sandbox Code Playgroud)

要么

grid1.DataContext = dtex;
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

小智 57

在cs文件中

DataTable employeeData = CreateDataTable();
gridEmployees.DataContext = employeeData.DefaultView;
Run Code Online (Sandbox Code Playgroud)

在xaml文件中

<DataGrid Name="gridEmployees" ItemsSource="{Binding}">
Run Code Online (Sandbox Code Playgroud)


小智 9

using (SqlCeConnection con = new SqlCeConnection())
   {
   con.ConnectionString = connectionString;
   con.Open();
   SqlCeCommand com = new SqlCeCommand("SELECT S_no,Name,Father_Name")
   SqlCeDataAdapter sda = new SqlCeDataAdapter(com);
   System.Data.DataTable dt = new System.Data.DataTable();
   sda.Fill(dt);
   dataGrid1.ItemsSource = dt.DefaultView;
   dataGrid1.AutoGenerateColumns = true;
   dataGrid1.CanUserAddRows = false;
   }
Run Code Online (Sandbox Code Playgroud)


小智 8

在.cs文件中

grid.DataContext = table.DefaultView;
Run Code Online (Sandbox Code Playgroud)

在xaml文件中

<DataGrid Name="grid" ItemsSource="{Binding}">
Run Code Online (Sandbox Code Playgroud)


小智 -2

在.cs文件中:

    private DataTable _dataTable;

    public DataTable DataTable
    {
        get { return _dataTable; }
        set { _dataTable = value; }
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this._dataTable = new DataTable("table");

        this._dataTable.Columns.Add("col0");
        this._dataTable.Columns.Add("col1");
        this._dataTable.Columns.Add("col2");

        this._dataTable.Rows.Add("data00", "data01", "data02");
        this._dataTable.Rows.Add("data10", "data11", "data22");
        this._dataTable.Rows.Add("data20", "data21", "data22");

        this.grid1.DataContext = this;

    }
Run Code Online (Sandbox Code Playgroud)

在 Xaml 文件中:

<DataGrid x:Name="grid1"
          Margin="10"
          AutoGenerateColumns="True"
          ItemsSource="{Binding Path=DataTable, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)