数据绑定WPF DataGrid控件到System.Data.DataTable对象?

Gif*_*guy 1 .net c# data-binding wpf xaml

要使我的WPF DataGrid控件绑定到DataTable对象,我需要做什么?

我已经忍受了好几天了.即使绑定和查询都正常工作,并且表中有可观察的数据 - 数据网格中也没有显示任何内容.

我的XAML代码类似于:

<Window x:Class="DataGridTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:TK="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
    Title="Window1" Height="300" Width="300">
        <Grid>
            <TK:DataGrid ItemsSource="{Binding Path=DTUsers}" />
        </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我的C#代码隐藏类似于:
(DAO是我的数据访问对象)

public partial class Window1 : Window
{
    public dao DAO = new dao (ConnectionString) ;
    public System.Data.DataTable DTUsers { get; set; }

    public Window1()
    {
        InitializeComponent();

        if (DAO != null)
            DTUsers = DAO.Query( @"SELECT * FROM users" );
            // Returns a DataTable object containing user records.
            // I have confirmed that this returns my data correctly.
    }
}
Run Code Online (Sandbox Code Playgroud)

我检查了输出,没有绑定错误.
为什么这会编译运行,但不会显示任何数据???

(如果你不知道在哪里的DataGrid控件时,WPF工具包,请点击这里.安装它,添加到WPFToolkit.dll参考[将在".NET"下的"添加引用"对话框中显示],和提供XML命名空间声明[在我上面的XAML中]以使用WPF DataGrid控件.)

Pav*_*aev 5

InitializeComponent()将实例化您的标记,包括绑定.此时DTUsers仍然是null,所以没有显示任何内容.然后,你改变了DTUsers,但是没有办法让绑定(以及网格)知道你做了 - 所以它什么也没做.

您应该创建DTUsers依赖项属性,或者INotifyPropertyChanged在类上实现,并PropertyChanged在更改属性值后引发事件.