首页 > 代码库 > 【WPF学习】创建WPF应用程序的三种方式

【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文件会自动生成一个初始化控件的方法。

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