我想在我的UI中显示数据网格。我将它绑定到我的viewmodel中的数据集。这是代码:
查看:
<StackPanel Orientation="Horizontal" Height="Auto" Name="stackPanel4" Width="Auto" Grid.Row="4">
<DataGrid Name="QueryGrid" AutoGenerateColumns="True" Height="1000" Width="1000" ItemsSource="{Binding QueryTable}" Visibility="{Binding Path=QueryGridVisiblity, Converter={StaticResource BoolToVis}}" />
</StackPanel>
视图模型:
private void OnRunQuery()
{
int count = 0;
DataSet queryDataset = null;
if (flag1 == true)
count++;
else if (flag2 == true)
count++;
else if (flag3 == true)
count++;
else if (flag4 == true)
count++;
else if (flag5 == true)
count++;
else if (flag6 == true)
count++;
if (paramCount > 0 && sqlQuery != null && paramCount == count)
{
queryDataset = _service.GetQueryDataSource(sqlQuery);
m_QueryTable = queryDataset;
OnPropertyChanged("QueryTable");
m_Visibility = true;
OnPropertyChanged("QueryGridVisiblity");
}
}
private DataSet m_QueryTable;
public DataSet QueryTable
{
get
{
return m_QueryTable;
}
set
{
m_QueryTable = value;
OnPropertyChanged("QueryTable");
}
}
在执行应用程序时,不会填充数据网格。但我在我的数据集中获取数据。
我缺少逻辑的任何建议? 我是WPF的新手。
答案 0 :(得分:2)
您需要绑定到视图模型上返回DataView
的属性。有关详细信息,请查看http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples。
E.g:
public DataView Items
{
get
{
return m_QueryTable.Tables[0].DefaultView;
}
}
或者(最好),您可以使用实体和存储库模式从视图模型中抽象出数据访问逻辑。
答案 1 :(得分:1)
DataSet
是一组DataTable
,而DataGrid
只显示一个DataTable
。因此,请展示DataTable
属性,而不是DataSet
。
答案 2 :(得分:1)
使用不带引号的表名
E.g:
ItemsSource="{Binding ProductsDataSet.Tables[Products]}"