绑定DataTable至WPF DataGrid时无行列显示问题求助
WPF DataGrid无法显示SQL Server表内容的问题
我尝试在WPF的DataGrid中显示SQL Server表的内容,已简化至最基础版本且保留默认设置,但仍无法看到任何列标题和数据行。
后台代码
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Test1DataSet test1DataSet = new Test1DataSet(); Test1DataSetTableAdapters.AdminUserTableAdapter tableAdapter = new Test1DataSetTableAdapters.AdminUserTableAdapter(); tableAdapter.Fill(test1DataSet.AdminUser); Test1DataSet.AdminUserDataTable dataTable = tableAdapter.GetData(); Console.WriteLine(dataTable.Count); dataGrid.DataContext = dataTable.DefaultView; } }
XAML代码
<Grid Name="Grid1"> <DataGrid Margin="25" Name="dataGrid"> <!-- <DataGrid.Columns> <DataGridTextColumn Header="id" Binding="{Binding id}" /> <DataGridTextColumn Header="Name" Binding="{Binding LastName}" /> </DataGrid.Columns> --> </DataGrid> </Grid>
SQL Server表结构
CREATE TABLE [dbo].[AdminUser] ( [id] INT IDENTITY (1, 1) NOT NULL, [EmployeeNumber] NVARCHAR (30) NOT NULL, [FirstName] NVARCHAR (100) NULL, [LastName] NVARCHAR (100) NULL, [isSA] BIT NOT NULL, [isDA] BIT NOT NULL );
解决方法
核心问题是未给DataGrid设置ItemsSource,仅设置DataContext无法让控件绑定数据,以下两种方案任选其一:
方案1:后台直接设置ItemsSource
将后台代码中的dataGrid.DataContext = dataTable.DefaultView;替换为:
dataGrid.ItemsSource = dataTable.DefaultView;
方案2:XAML中绑定ItemsSource
如果想保留DataContext的设置,在XAML的DataGrid标签中添加绑定:
<DataGrid Margin="25" Name="dataGrid" ItemsSource="{Binding}">
额外检查项:
- 确认
Console.WriteLine(dataTable.Count)输出大于0,确保已从数据库获取到有效数据 - 若后续需要自定义列,取消注释XAML中的
DataGrid.Columns区块即可,注意绑定的属性名需与DataTable列名完全匹配
内容的提问来源于stack exchange,提问作者user2871239
相关产品推荐
相关产品推荐

