【WPF学习】创建WPF应用程序的三种方式
2014-12-14 12:58
344 查看
说到WPF项目,肯定会想到XAML,这两者是相互补充的技术,其实它们也是相互独立的,所以可以创建不使用XAML的WPF项目,今天就讲一讲创建WPF应用程序的三种不同的编码方式。
1、只使用代码:这种方法类似于传统的Windows窗体应用程序,通过代码语句生成用户界面。这种方法在编写WPF项目时很不常见,但是也不完全是没有优点的,它的潜在优点是可以随意定制应用程序。例如想只用代码创建一个窗体,那么需要新建一个Class(注意不是新建一个Window),在Class的代码中继承Window,然后写一个初始化控件的方法。
2、使用代码和未经编译的XAML:这种方法就是在项目中单独建立XAML类,然后在代码中通过XAMLReader类解析它。这种方法对于动态的生成界面有些时候很有益处。就像我最近在做的项目,需要根据数据动态的生成gridview 的列,而列的多少是不一定的,列绑定的属性也是根据数据决定的,我查找了一些方法,但最终决定使用在后台代码中动态写入Xaml标记,我使用的方法比直接导入一个XAML文件要复杂,但是思想是一样的,也是使用XAMLReader类解析。
3、使用代码和编译过的XAML:这种就是我们常用的方法,比如在项目中新建一个Window,会自动关联一个Xaml文件,同时,Window.cs文件会自动生成一个初始化控件的方法。
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文件会自动生成一个初始化控件的方法。
相关文章推荐
- VC学习资料收集(24):在应用程序中创建快捷方式
- Java学习之多线程--创建线程的三种方式
- C#学习之二---创建简单的图形应用程序-WPF
- 三.Spring4学习-----IOC (控制反转)创建对象的三种方式
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- WPF学习笔记 - 如何用WPF创建单实例应用程序
- 韩顺平servlet学习笔记01-创建servlet的三种方式
- 【学习笔记】Spring——IOC创建的三种方式
- WPF学习之一:应用程序创建
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
- JAVA并发编程学习笔记------线程的三种创建方式
- 并发编程学习总结(一) :java 创建线程的三种方式的优缺点和实例(转载自:http://blog.csdn.net/u011784767/article/details/51315007)
- 对三种方式创建和使用Spring容器的学习
- 0036 Java学习笔记-多线程-创建线程的三种方式
- 创建Android应用程序-从艰难的方式中学习获得的的30条经验教训
- wpf 创建动画三种方式
- WPF学习笔记 - 如何用WPF创建单实例应用程序
- spring学习之---创建Bean的三种方式
- WPF学习之一:应用程序创建
- 学习WPF: 创建数据绑定目录树