Silverlight 程序动态创建添加UI元素

香水坏坏 发表于 2007-10-27 [silverlight]

我们都知道XAML标签元素在silverlight运行时被转换成相应的对象;这篇文章将告诉大家在程序运行时,如何动态添加UI元素(对象)。

通过对象来创建UI元素

C#代码
  1. Rectangle rc;   
  2. rc = new Rectangle();   
  3. //改变Rectangle的属性(到目前位置,我们还未设置任何要显示的内容)   
  4. rc.Width=20;rc.Fill = new SolidColorBrush(Colors.Red);   
  5. //改变附加属性(attached properties),必须使用SetValue方法:   
  6. //rectangle离画布左边距离为200PX   
  7. rc.SetValue<double>(Canvas.LeftProperty,200);   
  8. //添加把rc对象做为子对象添加到画布(和asp.net页的控件树的道理相拟)   
  9. this.Children.Add(rc);  

通过XAML创建UI元素

通过XamlReader类的Load方法,动态创建UI元素:

  1. 指定一条XAML内容字符串;
  2. 通过XamlReader.Load方法把元素在内存中编译(这样就可以得到UI元素对象的引用,也有可能是null,或者报错);
  3. 最后把它添加到容器的子控件中。


例如:在(X,Y)处创建一个大小为(W,H)的红色rectangle:

C#代码
  1. string xamlStr ="<rectangle Canvas.Left=\""+X+"\" Canvas.Top=\"+Y+"\""  
  2.                  + " Width=\""+W+"\" Height=\""+H+"\""  
  3.                  + " Fill =\"Red\" />";   
  4. try{   
  5. Rectangle rc = (Rectangle)XamlReader.Load(xamlStr);   
  6. this.Children.Add(rc);   
  7. ...   
  8. }   
  9. catch(Exception ex ){   
  10. ...   
  11. }  
2590 3 
访客评论
  • 李四    [2008-4-10]
    和张三兄一样,通过对象来创建UI元素可以运行机制,通过通过XAML创建UI元素怎么样都是空白。
  • 张三    [2008-4-10]
    不管在XAML里,还是在程序里动态添加控件,都输出空白页.

    但在vs2008里到是可以看到控件的.不解
  • qian    [2008-1-30]
    我用你这个方法试了.可以没有东西显示出来.还是一个空白页.但是调试没有出错.请问问题出在哪儿
发表评论
  • 你的姓名:
  • 你的网站:
  •   EMAIL:   
  • 评论内容:
  • 私人