【WPF学习】创建WPF应用程序的三种方式

说到WPF项目,肯定会想到XAML,这两者是相互补充的技术,其实它们也是相互独立的,所以可以创建不使用XAML的WPF项目,今天就讲一讲创建WPF应用程序的三种不同的编码方式。

1、只使用代码:这种方法类似于传统的Windows窗体应用程序,通过代码语句生成用户界面。这种方法在编写WPF项目时很不常见,但是也不完全是没有优点的,它的潜在优点是可以随意定制应用程序。例如想只用代码创建一个窗体,那么需要新建一个Class(注意不是新建一个Window),在Class的代码中继承Window,然后写一个初始化控件的方法。

privat void InitControls()
{
DockPanel panel=new DockPanel();
button btn=new Button;
btn.Content="click me";
btn.Click+=btn_Click;
IAddChild container=panel;
container.AddChild(btn);
container=this;
container.AddChild(panel);
}

private void btn_Click(object sender,RoutedEventArgs e)
{
btn.Content="OK";
}

2、使用代码和未经编译的XAML:这种方法就是在项目中单独建立XAML类,然后在代码中通过XAMLReader类解析它。这种方法对于动态的生成界面有些时候很有益处。就像我最近在做的项目,需要根据数据动态的生成gridview 的列,而列的多少是不一定的,列绑定的属性也是根据数据决定的,我查找了一些方法,但最终决定使用在后台代码中动态写入Xaml标记,我使用的方法比直接导入一个XAML文件要复杂,但是思想是一样的,也是使用XAMLReader类解析。

<DockPane  xmlns=:"http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Button Name="btn">
click me
</Button>
</DockPanel>
public Window(string xamlFile)
{
DependencyObject rootElement;
using(FileStream fs=new FileStream(xamlFile,FileMode.Open))
{
rootElement=(DependencyObject)XamlReader.Load(fs);
}
this.Content=rootElement;
btn1=(Button)LogicalTreeHelper.FiindLogicalNode(rootElement,"btn");
btn1.Click+=btn_Click;
}

3、使用代码和编译过的XAML:这种就是我们常用的方法,比如在项目中新建一个Window,会自动关联一个Xaml文件,同时,Window.cs文件会自动生成一个初始化控件的方法。

时间: 2024-10-29 19:09:45

【WPF学习】创建WPF应用程序的三种方式的相关文章

第六章、创建多对多关系的三种方式

目录 第六章.创建多对多关系的三种方式 一.创建多对多关系的三种方式 1. 全自动(推荐指度**) 2. 纯手动(不推荐) 3. 半自动(******) 第六章.创建多对多关系的三种方式 一.创建多对多关系的三种方式 1. 全自动(推荐指度**) 全自动:利用 ManyToManyField 让 django 自动创建第三张表 优点:不需要手动创建第三张表 不足:由于第三张表不是你手动创建的,也就意味着第三张表中字段是固定的,无法做扩展 class Book(models.Model): ...

spring学习(02)之bean实例化的三种方式

bean实体例化的三种方式 在spring中有三中实例化bean的方式: 一.使用构造器实例化:(通常使用的一个方法,重点) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化 第一种.使用构造器实例化: 这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现. 比如 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM.SAX以及XMLpull,这里对它们进行总结. 如果理解有误,欢迎指正   ^_* 一.DOM方式解析: xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据.这个写起来很简单,但是很消耗内存.要是数据过大,手机不够牛逼,可能手机直接死机. 常用的DoM接口和类: Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础.Element:该接口继承Node接口,提供了获

Scala学习2 ———— 三种方式完成HelloWorld程序

三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. 按照第一篇在windows下安装好scala后,直接Ctrl+R,然后在运行命令窗里输入scala,或者输入cmd后,进入命令行在输入scala. 然后我们输入 print("Hello World!") 看下结果: 第一种方式运行完毕. 注意:前两行命令使用了Tab键,可以像bash一样有补全的功能哦! 二.Scala脚本完成H

WPFの三种方式实现快捷键

原文:WPFの三种方式实现快捷键 最近,对wpf添加快捷键的方式进行了整理.主要用到的三种方式如下: 一.wpf命令: 资源中添加命令 <Window.Resources> <RoutedUICommand x:Key="ToolCapClick" Text="截屏快捷键" /> </Window.Resources> 输入命令绑定 <Window.InputBindings> <KeyBinding Gestu

嵌入式启动之三:应用程序的三种存储和加载方式

通过前面嵌入式启动方式的学习,再来理解嵌入式应用程序的三种加载方式是比较容易的.一般意义上,启动是为了引导OS到内存,而应用程序则是操作系统run起来后的用户选择,两者是比较相似的.先根据启动的两种方式来介绍应用程序的加载. 1. 对于资源有限型的嵌入式系统,应用程序在编译.链接之后,会通过二进制工具分析可执行文件的格式,抽出code和data段数据,生成.HEX格式或者.BIN格式,下载到SOC内置的flash中.在上电之后就直接执行了.这种加载方式称为离线加载. 2. 对于资源宽裕型的嵌入式

Windows 10 应用创建模糊背景窗口的三种方法

原文 Windows 10 应用创建模糊背景窗口的三种方法 现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了.iOS/Mac 和 Windows 系统都对此有支持. 本文将介绍三种创建模糊背景窗口的方法.有人可能喜欢称之为毛玻璃窗口.亚克力窗口. This post is written in multiple languages. Please select yours: 最早我是在 StackOverflow 上回答一位网友的提问时

Spring创建对象的三种方式以及创建时间

创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static HelloWorld getInstance(){ return new HelloWorld(); } } 2.在spring的配置文件中进行声明 <bean id="helloWorld2" class="com.itheima05.spring.bean.HelloWorld

WPF中使用文件浏览对话框的几种方式

原文:WPF中使用文件浏览对话框的几种方式 WPF本身并没有为我们提供文件浏览的控件, 也不能直接使用Forms中的控件,而文件浏览对话框又是我们最常用的控件之一. 下面是我实现的方式 方式1: 使用win32控件OpenFileDialog ? 1 2 3 4 5 6 7 Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog(); ofd.DefaultExt = ".xml"; ofd.Fil