zoukankan      html  css  js  c++  java
  • 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);
            }
        } 
    }
    <Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'    Foreground='LightSeaGreen' 
        
    FontSize='16pt' 
        
    Width='128' 
        
    Height='32'>
        From File Object!
    </Button>

  • 相关阅读:
    vscode 常用设置
    Git 克隆仓库报unable to get local issuer certificate错误解决方法
    Vue export & export default & import 总结
    Vue 结合html2canvas和jsPDF实现html页面转pdf
    Vue 修改网页标题和图标
    Python 使用Python操作xmind文件
    MySQL 递归查询实践总结
    禅道 给禅道缺陷增加缺陷责任人字段
    禅道 给禅道缺陷增加是否遗留及来源渠道自定义字段
    禅道 给禅道缺陷增加自定义字段供不同的缺陷操作页面使用
  • 原文地址:https://www.cnblogs.com/answercard/p/2740608.html
Copyright © 2011-2022 走看看