2000條你應知的WPF小姿勢 基礎篇<40-44 啟動關閉,Xaml,邏輯樹>


  在正文開始之前需要介紹一個人: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內部機制繼續做探索,敬請關注!

  推薦:女友的“網頁設計”之路

  如果覺得有幫助,右下角贊一下吧~ (* *)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM