您的位置:首页 > 编程语言

精通Silverlight——12.6.3 从XAML代码中创建控件

2008-04-28 15:47 323 查看

  还可以直接从XAML代码片段中动态创建控件,通过使用XamlReader类的Load方法,该方法需要一个字符串类型的XAML代码片断。XamlReader.Load方法将在内存中创建控件,如果创建成功,将返回一个Object类型的引用,通过类型转换变为所需的类型。如果创建失败否则返回null。下面的示例代码使用XAML代码创建一个矩形,如下所示:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace CreateUIFromXAMLSnippt
{
public partial class Page : Canvas
{
Rectangle rc1;
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
CreateRectangleFromXAML(100, 100, 200, 200);
//如果需要引用动态创建的控件,需要使用FindName.
rc1 = this.FindName("rc1") as Rectangle;
rc1.MouseLeftButtonDown += new MouseEventHandler(rc1_MouseLeftButtonDown);
}
//定义矩形的单击行为
void rc1_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
rc1.Fill = new SolidColorBrush(Colors.Blue);
}
//从XAML代码中动态创建矩形
private void CreateRectangleFromXAML(double X,double Y,double W,double H)
{
//XAML代码
string s = "<Rectangle Name='rc1' Canvas.Left='" + X + "' Canvas.Top='" + Y + "' "+ "Width='" + W + "' Height='" + H + "' Fill='Red' />";
//使用XamlReader类创建矩形
Rectangle rc = (Rectangle)XamlReader.Load(s);
//添加到根画布中
this.Children.Add(rc);
}
}
}
如果需要引用动态创建的控件,需要注意不能在XAML代码中使用x:Name属性,通过为其指定Name属性,并使用FindName方法,就可以完成对动态创建的控件的引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐