silverlight datagrid绑定匿名类

时间:2024-08-13 17:37:56
原文 http://www.cnblogs.com/luweis/archive/2011/10/21/2220587.html
刚开始遇到的一个问题是这样的,我有一个datagrid,根据不同的条件可以绑定上不同的数据源,或者根据同一个数据源,所要展示的数据字段是不一样的,所以我不能再xaml中把字段给写死了,我第一想到的方法如下: ds_t.fake_proc_T_AP_PMs.Clear();
ds_t.Load(ds_t.Proc_T_AP_PMQuery("2011-07-01", "2011-10-10", cbb_method.SelectedIndex),
(lo)=>
{
var query = from i in lo.Entities
select new {
i.AP名称,
i.MAC地址,
i.AP关联用户数,
i.CPU利用率,
i.内存利用率,
i.上行速率,
i.下行速率,
i.关联用户总数,
i.在线用户总数,
i.每用户关联次数,
i.上行流量,
i.下行流量
}; this.PMGrid.ItemsSource = query; 但是代码中还是会报错,我google了一下,发现datagrid无法绑定匿名类,那好吧,我还是构造一个类吧
ds_t.Load(ds_t.Proc_T_AP_PMQuery("2011-07-01", "2011-10-10", cbb_method.SelectedIndex),
(lo)=>
{
var query = from i in lo.Entities
select new AP_BASE{
AP名称= i.AP名称,
MAC地址= i.MAC地址
...
}; this.PMGrid.ItemsSource = query.ToList<AP_BASE>(); 无奈,还是跟原来的错误是一样的,看到网上有这样的说法:This is Silverlight security restriction - you cannot reflect internal types and anonymous type are internal 这个是在telerik中的论坛找到了http://www.telerik.com/community/forums/silverlight/gridview/gridview-anonymous-types-wont-bind.aspx 因为我本身用到的是RadGridview,
看来这个方法行不通,有时候http://*.com这里找找还是蛮有用的,
在AssemblyInfo.cs中添加
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Windows")]
即可, 不过得用SilverlightToolkit中的DataGrid才行,Telerik的Gridview还是报错。 参考文章: http://www.devcurry.com/2011/04/silverlight-4-databinding-with.html http://blog.lab49.com/archives/2306 http://forums.silverlight.net/p/55332/266134.aspx http://*.com/questions/6193387/populating-datagrid-in-wpf-with-anonymous-type-collection http://blogs.msdn.com/b/mikehillberg/archive/2008/05/05/binding-to-anonymous-types-in-an-xbap-or-silverlight.aspx http://forums.silverlight.net/t/160324.aspx/1 key:gridview anonymous type