要使我的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>
我的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.
}
}
我检查了输出,没有绑定错误 为什么这会编译运行,但不会显示任何数据???
(如果您不知道DataGrid控件的位置,WPF工具包可用here。安装它,添加对WPFToolkit.dll的引用[将在“Add Reference”对话框中显示“.NET”],并提供XML命名空间声明[在我上面的XAML中]以使用WPF DataGrid控件。)
答案 0 :(得分:5)
InitializeComponent()
将实例化您的标记,包括绑定。此时DTUsers
仍为null
,因此不会显示任何内容。然后,你改变了DTUsers
,但是没有办法让绑定(以及网格)知道你做了 - 所以它什么也没做。
您应该在您的课程中设置DTUsers
依赖项属性或实施INotifyPropertyChanged
,并在更改属性值后引发PropertyChanged
事件。