zoukankan      html  css  js  c++  java
  • Silverlight动态生成控件实例

    刚学习Silverlight,做了一个动态创建控件的实例

    实现结果:根据已有的控件类名称,得到控件的实例化对象

    实现思路1:就是定义一个模板文件,将类名做为参数,在silverlight中使用SreamWriter生成对应的文件,以便使用。但是,silverlight比较蛋疼的一点就是不能直接对文件进行操作,不论是读还是写都不成功,可能与silverlight的安全机制有关,没有对文件操作的权限。浪费了我一下午寻找解决方案,始终未果。

    实现思路2 :由于思路1的不可行性,我就换了另一种思维,实现了效果,非常简单,只需三、四行代码。看来原来真的是想多了,下面贴上代码

     1         #region 动态创建控件
     2         public void CreateControl(string className)
     3         {
     4             //获取程序集
     5             Assembly assembly= System.Reflection.Assembly.GetExecutingAssembly();
     6 
     7             //创建自定义类的实例
     8             CreateInstantiateOfClass c = new CreateInstantiateOfClass(className);
     9 
    10             //创建控件实例
    11             object j= c.GetClassInstance(assembly.ToString(), "HeatingMIS.Client.Controls");  
    12             ((Control)j).Width = 200;
    13             ((Control)j).Height = 200;
    14             
    15             this.LayoutRoot.Children.Add((Control)j);
    16         }
    17         #endregion
    Silver动态生成控件实例

    注:CreateInstantiateOfClass是自定义的一个根据类名创建类的实例的类,下面将贴出代码

     1    public class CreateInstantiateOfClass
     2     {
     3         public string className = string.Empty;
     4 
     5         //传递类名传数
     6         public CreateInstantiateOfClass(string className)
     7         {
     8             this.className = className;
     9         }
    10 
    11         //无参数构造函数
    12         public CreateInstantiateOfClass() { }
    13 
    14         public object GetClassInstance(string assembly, string NameSpace)
    15         {
    16             object obj;
    17             Type o = System.Reflection.Assembly.GetExecutingAssembly().GetType(NameSpace + "." + this.className);
    18             if (o == null)
    19             {
    20                 return null;
    21             }
    22             else
    23             {
    24                 obj = (object)Activator.CreateInstance(o);
    25             }
    26 
    27             return obj;
    28         }
    29     }
    自定义创建实例类

    通过上面两步就可生成控件类的实例。

     原文链接:http://1.myblogcloudy.sinaapp.com/

  • 相关阅读:
    hdu2653 Waiting ten thousand years for Love
    Request
    freetextbox 使用方法+下载
    格式化字符串 GridView DataFormatString
    GridView 中的button LinkButton 事件 CommandName
    Response 缓存
    Windows 7下VS2008升级
    ASP.NET中备份SQL Server数据库的方法
    asp.net和c#实现定时备份数据库(SQL Server2000)
    asp.net 中保存 数据库几种对象
  • 原文地址:https://www.cnblogs.com/AlphaThink-AT003/p/3262181.html
Copyright © 2011-2022 走看看