Thứ Năm, 10 tháng 2, 2011

Copy một đối tượng bất kỳ trong WPF

Khai báo một class hỗ trợ tạo một đối tượng trong Xaml

public class XamlHelper
{

public static object CreateObject(string s)
{
if (String.IsNullOrEmpty(s))
return null;
StringReader strReader = new StringReader(s);

XmlReader xmlReader = XmlTextReader.Create(strReader, new XmlReaderSettings());



return XamlReader.Load(xmlReader);

}



public static T Clone<T>(T org)

where T: DependencyObject
{
if (org == null)
return org;

string s = XamlWriter.Save(org);


return (T)CreateObject(s);

}
}



Sử dụng:

TextBlock lbl = new TextBlock();
lbl.Text = "Item 1";
for (int i = 0; i<10;i++)
{
pnl.Children.Add(XamlHelper.Clone<TextBlock>(lbl));

}

Lưu ý: Phương pháp này không copy event của đối tượng. Ví dụ lệnh dưới này, sự kiện click của Button được sao chép sẽ không có tác dụng.

pnl.Children.Add(XamlHelper.Clone<Button>(orgButton));


Không có nhận xét nào:

Đăng nhận xét