轉(zhuǎn)帖|其它|編輯:郝浩|2011-08-30 14:41:46.000|閱讀 668 次
概述:還可以直接從XAML代碼片段中動(dòng)態(tài)創(chuàng)建控件,通過(guò)使用XamlReader類的Load方法,該方法需要一個(gè)字符串類型的XAML代碼片斷。 XamlReader.Load方法將在內(nèi)存中創(chuàng)建控件,如果創(chuàng)建成功,將返回一個(gè)Object類型的引用,通過(guò)類型轉(zhuǎn)換變?yōu)樗璧念愋汀?/p>
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
還可以直接從XAML代碼片段中動(dòng)態(tài)創(chuàng)建控件,通過(guò)使用XamlReader類的Load方法,該方法需要一個(gè)字符串類型的XAML代碼片斷。XamlReader.Load方法將在內(nèi)存中創(chuàng)建控件,如果創(chuàng)建成功,將返回一個(gè)Object類型的引用,通過(guò)類型轉(zhuǎn)換變?yōu)樗璧念愋汀H?果創(chuàng)建失敗否則返回null。下面的示例代碼使用XAML代碼創(chuàng)建一個(gè)矩形,如下所示:
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);
//如果需要引用動(dòng)態(tài)創(chuàng)建的控件,需要使用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代碼中動(dòng)態(tài)創(chuàng)建矩形
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類創(chuàng)建矩形
Rectangle rc = (Rectangle)XamlReader.Load(s);
//添加到根畫布中
this.Children.Add(rc);
}
}
}
如果需要引用動(dòng)態(tài)創(chuàng)建的控件,需要注意不能在XAML代碼中使用x:Name屬性,通過(guò)為其指定Name屬性,并使用FindName方法,就可以完成對(duì)動(dòng)態(tài)創(chuàng)建的控件的引用。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:百度空間