软件编程
位置:首页>> 软件编程>> C#编程>> 在WPF中动态加载XAML中的控件实例代码

在WPF中动态加载XAML中的控件实例代码

作者:kagula  发布时间:2023-06-23 12:27:30 

标签:WPF,控件

本文实例讲述了在WPF中动态加载XAML中的控件的方法。分享给大家供大家参考,具体如下:


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);
   }
 }
}

xaml文件中的清单


<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
 Foreground='LightSeaGreen'
 FontSize='16pt'
 Width='128'
 Height='32'>
 From File Object!
</Button>

希望本文所述对大家C#程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com