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
注: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 }
通过上面两步就可生成控件类的实例。
标签:
Silverlight
, 动态创建控件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?