WPF:动态加载xaml对象
2013-05-16 11:50
302 查看
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); } } }
//创建文件,读取3.xaml文件的内容
static FileStream fs = new FileStream("3.xaml", FileMode.Open, FileAccess.Read);
/* 调用XamlReader的//Load方法,从上面的文件流中创建3D对象,
* 由于3.xaml的根节点是ViewPort3D,所以这里创建的是ViewPort3D
*/
Viewport3D vp2 = (Viewport3D)System.Windows.Markup.XamlReader.Load(fs);
//创建一个新窗口
Window anew=new Window();
//将新窗口的Content属性设为vp2,类型为ViewPort3D
anew.Content=vp2;
/*
some code of window property
*/
anew.show(); //显示新窗口
相关文章推荐
- 测试WPF中动态加载XAML中的控件
- 在WPF中动态加载XAML中的控件实例代码
- WPF中动态加载XAML中的控件
- WPF中当资源之间相互依赖(xaml资源与类对象资源相互依赖)时,常见无法加载的问题
- WPF动态加载XAML
- Silverlight学习笔记(二)-----XamlReader 动态加载SilverLight 对象
- 测试WPF中动态加载XAML中的控件
- WPF中,怎样将XAML代码加载为相应的对象?
- WPF架构关键技术剖析(2)--XAML、对象序列化、类动态实例化
- WPF架构关键技术剖析(2)--XAML、对象序列化、类动态实例化
- [WPF学习笔记]动态加载XAML
- WPF中Style文件的引用——使用xaml代码或者C#代码动态加载
- WPF动态加载3D 放大-旋转-平移
- jquery监听动态加载的对象的click方法
- java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象
- gobject对象不宜作为动态加载的插件
- WPF整理-XAML构建后台类对象
- 用ObjectRepositoryUtil动态加载和解析QTP对象库文件
- WPF动态添加XAML
- EasyUi Hibernate 增加编辑book对象,里面又有book类型对象;添加编辑时在combobox动态加载book的类型