標籤:style blog http io ar color os 使用 sp
說到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應用程式的三種方式