精通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方法,就可以完成对动态创建的控件的引用。
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方法,就可以完成对动态创建的控件的引用。
相关文章推荐
- 精通Silverlight——12.6.1 使用.NET代码创建控件
- SilverLight学习笔记--如何在xaml文件中操作用户在后台代码定义的类(2)--示例篇:创建一个登录控件(原创)(转载本文请注明出处)
- 精通Silverlight——12.6 动态创建控件
- 精通Silverlight——11.3.2 XAML代码的错误处理 .
- WPF&Silverlight之XamlReader动态创建控件并绑定
- 精通Silverlight——11.3.2 XAML代码的错误处理
- 精通Silverlight——12.5 创建Silverlight用户控件
- Silverlight的 InLine Xaml 功能 - 让您可轻易地动态产生Xaml代码
- ViewFlipper(多图层控件)及手势识别,代码创建动画效果
- Silverlight再xaml.CS代码中调用Javascript
- Silverlight实用窍门系列:14.Visifire图表控件的使用一(图表的创建和基础使用)【附带源码实例】
- 在Silverlight页面里显示HTML的免费控件下载(附使用方法代码)
- Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义HeaderRow的GridView控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]
- 在VS 2005后台代码中创建用户控件
- android 中通过代码创建控件
- c#允许多线程访问主线程创建的控件的代码