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

 更新时间:2016年07月05日 10:55:51   作者:kagula  
这篇文章主要介绍了在WPF中动态加载XAML中的控件,实例分析了WPF中针对XAML中控件的动态调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了在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#相关内容感兴趣的读者可查看本站专题:《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程

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

相关文章

  • 浅析JAVA中过滤器、监听器、拦截器的区别

    浅析JAVA中过滤器、监听器、拦截器的区别

    本文通过代码分析和文字说明的方式给大家浅析JAVA中过滤器、监听器、拦截器的区别,感兴趣的朋友一起看下吧
    2015-09-09
  • C# ThreadPool之QueueUserWorkItem使用案例详解

    C# ThreadPool之QueueUserWorkItem使用案例详解

    这篇文章主要介绍了C# ThreadPool之QueueUserWorkItem使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C#往线程里传递参数的方法小结

    C#往线程里传递参数的方法小结

    这篇文章主要介绍了C#往线程里传参数的方法小结的相关资料,还给大家简单说明下传参的两种方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Unity实现虚拟摇杆

    Unity实现虚拟摇杆

    这篇文章主要为大家详细介绍了Unity实现虚拟摇杆,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#写入XML文档

    C#写入XML文档

    这篇文章介绍了C#写入XML文档的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#并发编程入门教程之概述

    C#并发编程入门教程之概述

    这篇文章主要给大家介绍了关于C#并发编程之概述的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用c#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 浅解关于C#多线程的介绍

    浅解关于C#多线程的介绍

    本篇文章小编将为大家介绍,浅解关于C#的多线程,有需要的朋友可以参考一下
    2013-04-04
  • C#通过DataSet读写xml文件的方法

    C#通过DataSet读写xml文件的方法

    这篇文章主要介绍了C#通过DataSet读写xml文件的方法,涉及C#使用DataSet操作XML的相关技巧,方法简单实用,需要的朋友可以参考下
    2015-05-05
  • c# 基于Titanium爬取微信公众号历史文章列表

    c# 基于Titanium爬取微信公众号历史文章列表

    这篇文章主要介绍了c# 基于Titanium爬取微信公众号历史文章列表,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#中winform窗体实现注册/登录功能实例(DBHelper类)

    C#中winform窗体实现注册/登录功能实例(DBHelper类)

    在编写项目时,编写了一部分关于登录页面的一些代码,下面这篇文章主要给大家介绍了关于C#中winform窗体实现注册/登录功能(DBHelper类)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06

最新评论