在正文開始之前需要介紹一個人:Sean Sexton. 來自明尼蘇達雙城的軟件工程師。最為出色的是他維護了兩個博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF 。他以類似微博式的150字簡短語言來每天更新一條WPF和C#重要又容易被遺忘的知識。Follow他的博客也有一段日子了,很希望能夠分享給大家。
本系列我不僅會翻譯他的每一個tip,也會加入自己開發之中的看法和見解。本系列我希望自己也能和他一樣堅持下來,每天的進步才能促成偉大。
在這里鄭重說明.該系列是基於Sean Sexton先生的英文博客, Sean Sexton擁有全部版權和撤銷權利。
前文:<1-7> , <8-14>,<15-21>,<22-27>, <28-33>,<34-39>
[小九的學堂,致力於以平凡的語言描述不平凡的技術。如要轉載,請注明來源:小九的學堂。cnblogs.com/xfuture]
#40 WPF應用主窗體
一個WPF應用程序至少會創建一個主窗體但始終只有一個主窗體MainWindow。Application.MainWindow屬性指定了主窗體的引用。默認情況下,主窗體都是第一個創建的窗體。當然你可以在Xaml中來手動指定主窗體。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="StartupWindow.xaml" > <Application.MainWindow> <NavigationWindow Source="MainPage.xaml" Visibility="Visible"></NavigationWindow> </Application.MainWindow> </Application>
在應用程序啟動過程,下面的示例演示如何實例化代碼中的 MainWindow
public partial class App : Application { void App_Startup(object sender, StartupEventArgs e) { MainWindow window = new MainWindow(); window.Show(); } }
#41 ShutdownMode
WPF Application類里包含一個ShutDownMode的屬性。
/// <summary> /// 指定應用程序將如何關閉。由 <see cref="P:System.Windows.Application.ShutdownMode"/> 屬性使用。 /// </summary> public enum ShutdownMode : byte { OnLastWindowClose, OnMainWindowClose, OnExplicitShutdown, }
指定了應用程序關閉的規則。一般來說是OnLastWindowClose,即關閉了所有窗口后應用程序關閉。可以手動指定為OnMainWindowClose(即主窗體關閉時程序關閉)和OnExplicitShutdown(必須要顯式調用ShutDown方法,不然即使關閉窗口,程序也會后台運行)
#42 設計視覺元素的三個位置
WPF設計圖形元素時,比如圖形元素在Window,Page或者UserControl中,有三個地方可以來對這個對象進行更改:
更改布局(Layout)
1. 在WPF設計器(designer)中的design view里進行更改。
2. WPF設計器中XAML界面直接進行更改。
更改行為(xaml.cs)
3. 在IDE中對C#代碼進行更改。
#43 Visual Studio創建Xaml
在Visual Studio中雙擊Xaml code可以打開一個分屏的Xaml code和Design界面,如下:
在Design的Tab中,你可以通過拖拽控件來進行UI設計。在屬性欄進行對控件的更改。
在Xaml的Tab,可以通過修改代碼的方式直接完成上面兩步。
VS會保持設計界面和Xaml界面的同步,當修改其中之一時,另外一個tab會實時的更新。
#44 邏輯樹
WPF邏輯樹是用戶界面元素的層次結構關系的樹狀圖。如果你的UI是在Xaml里定義的,邏輯樹就是Xaml中元素整合為具有父子關系的樹的模型。它描述了在運行時這些元素之間的關系。邏輯樹可以幫助我們理解:
1. Resource lookup 資源查找
2. Property inheritance 屬性繼承
3. Event routing 路由事件。
下面有個例子:
<Window x:Class="WpfApplication4.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="A window.." Height="350" Width="525"> <StackPanel> <Button Content="Click Me" Height="23" HorizontalAlignment="Left" Width="75" Click="button1_Click" /> <TextBox /> <ListBox> <ListBoxItem Content="Barley"/> <ListBoxItem Content="Oats"/> </ListBox> </StackPanel> </Window>
邏輯樹的模型是:
后篇會對WPF內部機制繼續做探索,敬請關注!
推薦:女友的“網頁設計”之路
如果覺得有幫助,右下角贊一下吧~ (* *)