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

posted @ 2014-12-14 12:58  learingNew  阅读(952)  评论(0编辑  收藏  举报