lex*_*eme 4 c# wpf datacontext datagrid anonymous-types
我正在使用匿名类型的集合填充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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码.
我再次启动..它只是第三次正确显示?
你可能需要做两件事.第一个,正如@Tim建议的那样,是将查询分配给DataGrid.ItemsSource属性.
myDataGrid.ItemsSource = from a in x
select new { Prop1 = a.A, Prop2 = a.B, ... };
Run Code Online (Sandbox Code Playgroud)
第二位将启用自动列生成DataGrid:
<DataGrid x:Name="myDataGrid"
AutoGenerateColumns="True" />
Run Code Online (Sandbox Code Playgroud)
编辑:我使用自动列生成和带有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>
Run Code Online (Sandbox Code Playgroud)
编辑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();
Run Code Online (Sandbox Code Playgroud)
然后XAML回到:
<DataGrid x:Name="myDataGrid"
AutoGenerateColumns="True" />
Run Code Online (Sandbox Code Playgroud)