Silverlight 动态创建控件

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

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

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

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

复制代码
 1    #region 动态创建控件
 2         public void CreateControl(string className)
 3         {
 4 
 5             //获取程序集
 6             Assembly assembly= System.Reflection.Assembly.GetExecutingAssembly();
 7 
 8             //根据类名创建实例
 9             object c = new CreateInstantiateOfClass(className); 
10             ((Control)c).Width = 100;
11             ((Control)c).Height = 100;
12             this.LayoutRoot.Children.Add((Control)c);
13         }
14         #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     }
自定义创建实例类
复制代码

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

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

posted @   竹林溪风  阅读(225)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示