silverlight datagrid绑定匿名类

 

原文 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://stackoverflow.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://stackoverflow.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 

 

你可能感兴趣的:(silverlight)