目錄
- 新建專案
- 剖析XAML代碼
- 參考資料
新建專案
在Visual Studio 2019中使用WPF專案模板建立一個最簡單的WPF專案,如下圖所示:

可以看到,專案里面主要有兩個分支:
- App.xaml分支:程式的主體,宣告了程式的行程會是誰,同時指定了程式的主表單是誰,分支里的App.xaml.cs是App.xaml的后臺代碼,
- MainWindow.xaml分支:程式的主表單,具有自己的后臺代碼Windowl.xaml.cs,默認兩個檔案,
在Windows系統里一個程式就是一個行程(Proces),一個GUl行程需要有一個表單(Window)作為“主表單”,
接下來我們重點分析MainWindow.xaml和它的后臺代碼,
剖析XAML代碼
在MainWindow.xaml里能看到如下代碼:
<Window x:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:LearnWpf"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
XAML是一種由XML派生而來的語言,很多XML中的概念在XAML是通用的,如:
- 使用標簽宣告一個元素(每個元素對應記憶體中的一個物件)時需要使用起始標簽<Tag>和終止標簽</Tag>
- 夾在起始標簽和終止標簽中的XAML代碼表示是隸屬于這個標簽的內容
- 如果沒有什么內容隸屬于某個標簽,則這個標簽稱為空標簽,可以寫為<Tag/>
為了表示同類標簽中的某個標簽與眾不同,可以給它的特征(Attribute)賦值,為特征賦值的語法如下:
- 非空標簽:<Tag Attributel=Valuel Attribute2=Value2>Content
- 空標簽:<Tag Attributel=Valuel Attribute2=Value2/>
為了表示同類標簽中的某個標簽與眾不同,可以給它的特征(Atribute)賦值,為特征賦值的語法如下:
·非空標簽:<Tag Aributel=Valuel Attribute2-Value2>Content
·空標簽:<Tag Attributel=Valuel Attribute2=Value2>
注意Attribute(特性)和Property(屬性)的區別,Attribute和Property是兩個層面上的東西:
- Attribute則是編程語言文法層面的東西,只與語言層面上的東西相關
- Property屬于面向物件理論范疇,是針對物件而言的
- XAML中把標簽的Attribute與物件的Property做了一個映射,但也不是完全映射的,比如,x:Class特性
MainWindow.xaml的總體結構是一個
<Window>
<Grid>
</Grid>
</Window>
<Window>標簽的Attribute如下所示:
x:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:LearnWpf"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
- 最上面一行是在使用名為Class的Aturibute,這個Attribute來自于x:前綴所對應的名稱空間,x:Class特性告訴XAML編譯器將編譯結果和哪個C#編譯的類合并
- 中間五行是在宣告名稱空間,xmlns也就是XML-Namespace的縮寫,xmlns后可以跟一個可選的映射前綴并用冒號分隔
- mc:Ignorable命名空間提供了xaml處理器“忽略”的xaml定義,允許您指定設計者在設計時使用的資訊(在運行時被忽略),如d:DesignHeight="725" d:DesignWidth="1015"
- Title、Height和Width是與Window物件的Property相對應的
如果沒有寫可選映射前綴,那就意味著所有來自于這個名稱空間的標簽前都不用加前綴,這個沒有映射前綴的名稱空間稱為“默認名稱空間”——默認名稱空間只能有一個,而且應該選擇其中元素被最頻繁使用的名稱空間來充當默認名稱空間,
上面看上去像網頁地址的名稱空間是XAML決議器的一個硬性編碼(hard-coding),只要見到這些固定的字串就會把一系列必要的程式集(Assembly)和程式集中包含的.NET名稱空間參考進來,在XAML中參考外來程式集和其中.NET名稱空間與C#的語法不同,需要在根元素的起始標簽中宣告命名空間,如:xmlns:c="clr-namespace:System.Windows.Controls;assembly=PresentationFramework",c是映射前綴(可換成其他的字串,如control),其中的命名空間、程式集根據實際情況確定,硬性編碼可以看成批量的程式集和程式集中包含的.NET名稱空間參考,它們共用一個命名空間前綴,
參考資料
深入淺出WPF-從零起步認識XAML 網盤提取碼:5w20
WPF學習之X名稱空間詳解
c# – 什么意思mc:Ignorable =“d”在WPF?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/228269.html
標籤:WPF
下一篇:wcf訊息佇列和服務
