说到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