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

XamlReader.Load Silverlight 程序动态创建添加UI元素,第1张

概述本来蛮简单的一个用法,却在实用中折腾了半天,原因就一个属性没写xmlns='http://schemas.microsoft.com/client/2007',否则就一直报错,不知所以,正确用法为: Xaml代码为:             string _Xaml=                 "<PathGeometry  xmlns='http://schemas.microsoft.c

本来蛮简单的一个用法,却在实用中折腾了半天,原因就一个属性没写xmlns='http://schemas.microsoft.com/clIEnt/2007',否则就一直报错,不知所以,正确用法为:

Xaml代码为:
            string _Xaml=
                "<PathGeometry  xmlns='http://schemas.microsoft.com/clIEnt/2007'>" +
                "<Pathfigure StartPoint='0,0'>" +
                "<linesegment />" +
                "</Pathfigure>" +
                "</PathGeometry>";
PathGeometry myGEO= XamlReader.Load(xaml) as PathGeometry;

又解决了一个问题:
如果需要引用动态创建的控件,需要注意不能在XAML代码中使用x:name属性,通过为其指定name属性,并使用Findname方法,就可以完成对动态创建的控件的引用。

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

通过对象来创建UI元素

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

通过XAML创建UI元素

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

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


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

C#代码 string xamlStr ="<rectangle Canvas.left=/""+X+"/" Canvas.top=/"+Y+"/""                    + " WIDth=/""+W+"/" Height=/""+H+"/""                    + " Fill =/"Red/" />";    try{    Rectangle rc = (Rectangle)XamlReader.Load(xamlStr);    this.Children.Add(rc);    ...    }    catch(Exception ex ){    ...    }   总结

以上是内存溢出为你收集整理的XamlReader.Load Silverlight 程序动态创建添加UI元素全部内容,希望文章能够帮你解决XamlReader.Load Silverlight 程序动态创建添加UI元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存