本来蛮简单的一个用法,却在实用中折腾了半天,原因就一个属性没写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元素
- 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元素:
例如:在(X,Y)处创建一个大小为(W,H)的红色rectangle:
- 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 ){
- ...
- }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。