您的位置:首页 > 其它

WPF中动态加载XAML中的控件

2012-10-26 09:44 375 查看
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.IO;

using System.Xml;

using System.Windows.Markup;

/*

* 功能:测试WPF中动态加载XAML中的控件

* 并加到指定的子节点中。

* 作者:Kagula

* 时间:2012-09-20

* 环境:VS2008 .NET FRAMEWORK 3.5

* 参考资料:[1]《Application=Code+Markup 读书笔记 19》

* http://space.itpub.net/15123181/viewspace-423015
* [2]《Pack URIs in Windows Presentation Foundation》

* http://technet.microsoft.com/en-US/library/aa970069(v=vs.90)
*/

namespace testXAMLLoad

{

/// <summary>

/// Interaction logic for Window1.xaml

/// </summary>

public partial class Window1 : Window

{

public Window1()

{

InitializeComponent();

//LoadEmbeddedXaml();

//LoadEmbeddedXaml2();

LoadEmbeddedXaml3();

}

//从字符串中加载

public void LoadEmbeddedXaml()

{

Title = "Load Embedded Xaml";

string strXaml = "<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'" +

" Foreground='LightSeaGreen' FontSize='16pt' Width='128' Height='32'>" +

" From String Object!</Button>";

StringReader strreader = new StringReader(strXaml);

XmlTextReader xmlreader = new XmlTextReader(strreader);

object obj = XamlReader.Load(xmlreader);

grid1.Children.Add((UIElement)obj);

}

//从外部文件中加载 Button控件

public void LoadEmbeddedXaml2()

{

XmlTextReader xmlreader = new XmlTextReader("d:\\a.xaml");

UIElement obj = XamlReader.Load(xmlreader) as UIElement;

grid1.Children.Add((UIElement)obj);

}

//从资源文件中加载

public void LoadEmbeddedXaml3()

{

//Build Action = Resource,Do not Copy,无相应cs文件

Uri uri = new Uri("/LoadXamlResource.xaml",UriKind.Relative);

Stream stream =Application.GetResourceStream(uri).Stream;

//FrameworkElement继承自UIElement

FrameworkElement obj =XamlReader.Load(stream) as FrameworkElement;

grid1.Children.Add(obj);

}

}

}

<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Foreground='LightSeaGreen'

FontSize='16pt'

Width='128'

Height='32'>

From File Object!

</Button>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: