如何在WPF中将DataTable绑定到DataGrid?

时间:2018-08-29 13:06:33

标签: c# wpf datagridview datatable

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp3
{

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }


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

        public DataTable dataTable { get; private set; }

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

            this.DataTable.Columns.Add("name");
            this.DataTable.Columns.Add("age");
            this.DataTable.Columns.Add("gender");

            this.DataTable.Rows.Add("ddddd", "22", "male");
            this.DataTable.Rows.Add("dfff", "11", "male");
            this.DataTable.Rows.Add("data", "11", "female");

            this.grid1.DataContext = this;

        }
    }
}

2 个答案:

答案 0 :(得分:1)

Page Public Content Access方法中,您已将DataTable字段引用为WindowLoaded,但将其定义为_dataTable

只需更新其中之一以匹配。

答案 1 :(得分:0)

由于只能绑定到IEnumerable,因此应绑定到DefaultView的{​​{1}}属性:

DataTable

您可能想删除<DataGrid x:Name="grid1" ItemsSource="{Binding _dataTable.DefaultView}" /> (属性名称不应以下划线开头),而是初始化并绑定到_dataTable属性,但以上内容应在您当前的实现下起作用。