我正在使用匿名类型的集合填充datagrid(我正在设置DataGrid's DataContext
属性)。而且没有错误。并且在datagrid中没有任何内容。我已尝试使用已定义的对象集合进行相同的操作,但同样没有显示任何内容。请问你能告诉我该怎么做。
谢谢!
确定。我试图设置ItemsSource属性,它的工作原理。但是我得到了奇怪的结果..
我不知道怎么但是在3D发布之后它现在正常工作?
private void ShowABCResultsButtonOnClick(Object sender, RoutedEventArgs e)
{
var anonArray = new List<NormalizedResult>
{
new NormalizedResult
{
Key = 1,
Title = "Колос",
Volume = 1322.01m,
Weighted = 6.7840m,
Result = 6.7840m,
Group = "A"
},
new NormalizedResult
{
Key = 2,
Title = "Украинский Новый",
Volume = 1250.47m,
Weighted = 6.4169m,
Result = 13.2009m,
Group = "A"
},
new NormalizedResult
{
Key = 3,
Title = "Ржано-Пшеничный",
Volume = 1202.1m,
Weighted = 6.1687m,
Result = 19.3695m,
Group = "A"
}
};
this.dataGrid2.ItemsSource = anonArray;
}
这是我的代码。
我再次启动..它只是第三次显示正确吗?
答案 0 :(得分:7)
你可能需要做两件事。第一个as @Tim suggested将查询分配给DataGrid.ItemsSource
属性。
myDataGrid.ItemsSource = from a in x
select new { Prop1 = a.A, Prop2 = a.B, ... };
第二位将在 DataGrid
上启用自动列生成:
<DataGrid x:Name="myDataGrid"
AutoGenerateColumns="True" />
击> <击> 撞击>
编辑:我使用自动列生成和带有vanilla LINQ查询的匿名类型重新创建了您的图片。所以需要可以使用显式列来使用或切换到真实类型。
<DataGrid x:Name="myDataGrid"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Property 1"
Binding="{Binding Prop1}"/>
<DataGridTextColumn Header="Property 2"
Binding="{Binding Prop2}"/>
</DataGrid.Columns>
</DataGrid>
编辑2 :您可以使用AutoGenerateColumns="True"
,但不能使用IEnumerable<T>
,其中T
是匿名类型。通过添加ToList
,问题就会消失。
myDataGrid.ItemsSource = (from m in typeof(int).GetMethods()
select new
{
Name = m.Name,
ReturnType = m.ReturnType.FullName
}).ToList();
然后XAML回到:
<DataGrid x:Name="myDataGrid"
AutoGenerateColumns="True" />
答案 1 :(得分:5)
非常确定您应该设置DataGrid的ItemsSource
。
答案 2 :(得分:2)
请确保在数据网格中绑定匿名对象时使用相同的属性名称,并确保该集合包含项目。