我正在创建一个UWP应用程序,尝试使用从数据库获取的包含数据的DataTable填充我的DataGrid,但是没有成功。我已经搜索了解决方案,但就是无法摆脱错误。
XAML 代码:
当我将ItemSource和DataContext交换时:
我没有收到任何错误,但是我也没有以任何方式改变数据表格。
我尝试在Windows表单中使用DataGridView做同样的事情,我成功了:
XAML 代码:
<StackPanel>
<Button Content="Fill DataGrid" Click="Button_Click"/>
<controls:DataGrid x:Name="dataGrid"
Margin="30"
AutoGenerateColumns="True">
</controls:DataGrid>
</StackPanel>
C#代码:
private static DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("FirstName", typeof(string));
dt.Columns.Add("LastName", typeof(string));
dt.Columns.Add("Address", typeof(string));
dt.Columns.Add("City", typeof(string));
for (int i = 0; i < 10; i++)
dt.Rows.Add(i, "text", "text", "text", "text");
return dt;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
DataTable dt = GetDataTable();
dataGrid.ItemsSource = dt.DefaultView;
}
并且这个错误出现了20次(表格中有10个条目)
Error: BindingExpression path error: 'Item' property not found on 'System.Data.DataRowView'. BindingExpression: Path='Item' DataItem='System.Data.DataRowView'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='null'); target property is 'Text' (type 'String')
当我将ItemSource和DataContext交换时:
dataGrid.DataContext = dt.DefaultView;
我没有收到任何错误,但是我也没有以任何方式改变数据表格。
我尝试在Windows表单中使用DataGridView做同样的事情,我成功了:
private void button_Click(object sender, EventArgs e)
{
DataTable dt = GetDataTableFromDatabase();
dataGridView1.DataSource = dt;
}
我理解了,这不是数据库或DataTable的问题。
我已经通过创建一个包含来自DataTable实体的列表并将它们添加为数据源到dataGrid来实现了解决方法,但问题是我有很多不同的DataGrids,如果我能以类似于Windows窗体中dataGridView的示例方式解决问题,那将会更容易。
任何帮助都将不胜感激。