好久没写Blogs了,现在在看【WPF编程宝典】,决定开始重新写博客,和大家一起分享技术。

在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码。

以下是动态加载XAML的一个事例代码。

在debug文件夹下新建一个文本文件,重命名为:file.xaml

插入界面代码:

<DockPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">

<Button Name="button1" Margin="30" Content="Pleas click me."></Button>

</DockPanel>

在VS新建LoadXAML.CS类。

public
class
LoadXAML :Window

{

private
Button button1;

 

public LoadXAML(string xamlFile)

{

Width = Height =
285;

Left = Top =
100;

Title =
"动态加载XAML";

 

DependencyObject rootElement;

using (FileStream fs=new
FileStream(xamlFile, FileMode.Open))

{

rootElement =(DependencyObject) XamlReader.Load(fs);

 

}

Content = rootElement;

//查找控件(方法一)

//button1 = (Button) LogicalTreeHelper.FindLogicalNode(rootElement, "button1");

 

//查找控件(方法二)

FrameworkElement frameworkElement = (FrameworkElement) rootElement;

button1 = (Button) frameworkElement.FindName("button1");

 

button1.Click += button1_Click;

}

 

void button1_Click(object sender, RoutedEventArgs e)

{

button1.Content =
"Thank you.";

}

 

修改App.xaml启动项

protected
override
void OnStartup(StartupEventArgs e)

{

var win =
new
LoadXAML("file.xaml");

win.Show();

}

[WPF学习笔记]动态加载XAML的更多相关文章

  1. WPF中动态加载XAML中的控件

    原文:WPF中动态加载XAML中的控件 using System; using System.Collections.Generic; using System.Linq; using System. ...

  2. XamlReader 动态加载XAML

    原文:XamlReader 动态加载XAML XAML: <Grid xmlns:x="http://schemas.microsoft.com/client/2006" x ...

  3. mvvm模式下在WPF项目中动态加载项目的程序集和类

    在mvvm模式的wpf项目中有个需求需要去加载解决方案的程序集,并且根据程序集去动态加载当前程序集的类,做成下拉框形式. 效果: //全局定义 private ComboBox abList= nul ...

  4. 从高德 SDK 学习 Android 动态加载资源

    前不久跑去折腾高德 SDK 中的 HUD 功能,相信用过该功能的用户都知道 HUD 界面上的导航转向图标是动态变化的.从高德官方导航 API 文档中 AMapNaviGuide 类的描述可知,导航转向 ...

  5. JS学习之动态加载script和style样式

    前提:我们可以把一个网页里面的内容理解为一个XML或者说网页本身也就是一个XML文档,XML文档都有很特殊的象征:"标签"也叫"节点".我们都知道一个基本的网页 ...

  6. Android学习——Fragment动态加载

    动态加载原理 利用FragmentManager来添加一套Fragment事务,最后通过commit提交该事务来执行对Fragment的相关操作. FragmentManager fragmentma ...

  7. 学习Tomcat动态加载JSP的Class类

    今天在修改项目一个JSP文件时,突然想到Tomat是怎么实现动态实时加载JSP编译后的class类的? 查了半天资料,看了很多文章,终于明白是怎么回事了:ClassLoader,当tomcat发现js ...

  8. 学习笔记TF015:加载图像、图像格式、图像操作、颜色

    TensorFlow支持JPG.PNG图像格式,RGB.RGBA颜色空间.图像用与图像尺寸相同(height*width*chnanel)张量表示.通道表示为包含每个通道颜色数量标量秩1张量.图像所有 ...

  9. Away3D 学习笔记(一): 加载3DS格式的模型文件

    加载外部的3DS文件分为两种: 1: 模型与贴图独立于程序的,也就是从外部的文件夹中读取 private function load3DSFile():Loader3D { loader = new ...

随机推荐

  1. iOS - 语音云通讯

    iOS SDK 2.0 语音及图片消息详解本文档将详细介绍融云的语音及图片消息接口功能及使用说明.阅读本文前,我们假设您已经阅读了融云 iOS 开发指南,并掌握融云 SDK 的基本用法. 语音消息用来 ...

  2. valueOf和toString

    有一道经典的题目: var add = function() {___}; console.log(add(3)(4)(5)); // 输出60 题目要求能无限相乘,请补充add函数. 首先很显然,a ...

  3. Scala学习笔记(六):Scala程序

    想要编写能够独立运行的Scala程序,就必须创建有main方法(仅带一个参数Array[String],且结果类型为Unit)的单例对象. 任何拥有合适签名的main方法的单例对象都可以用来作为程序的 ...

  4. php模式设计之 工厂模式

    承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道 ...

  5. css3动画 bug 2点

    1. .myanimate{ transition-property: left;transition-duration: .3s;transition-timing-function: ease } ...

  6. Orchard特性路线图(其实就是以后将做什么)

    本文链接:http://www.cnblogs.com/souther/p/4539975.html 主目录 近期,我们将注意力集中在完成第一版的发布并且计划开发下一版.特征路线图提及的就是项目涉及到 ...

  7. 软工实践个人练习-使用github进行代码管理

    1.掌握使用Git进行代码版本,使用github进行代码托管. 2.创建小组Organization,并邀请组员进来. 3.将代码库https://github.com/sefzu2015/AutoC ...

  8. 如何在VMWare Workstation实现虚拟机与真机的文件共享

    1.进入虚拟机的配置选项 进入方法有三种,一种是使用快捷键Ctrl+D,第二种是先右键点击虚拟机再选择Settings选项,第三种是点击快捷栏中的VM后选择Settings选项,后两种方法的截图如下. ...

  9. ASP.NET--GridView配合DetailsView初使用

    1.GridView与DetailsView中的绑定模板不可以进行编辑的问题 方法:将要编辑的列转换为模板列---TemplateField <EditItemTemplate></ ...

  10. C#给文件夹添加权限

    //==== //添加权限 private void SetAttributes(string folder) { if (folder == "" || !Directory.E ...