武漢軟件開發:一看就會的wpf入門教程


  據了解,目前武漢軟件開發市場關於PC端桌面開發的技術主要有兩塊:winform和wpf。wpf是微軟既winform之后推出的一套新的桌面開發技術。采用數據驅動的方式可以輕松編寫出非常炫的界面。

武漢螞蹄軟件服務中心-武漢軟件開發

1、XAML語言是一種界面描述語言,用戶界面用XAML的元素或屬性來表示,WPF引擎把XAML描述的UI元素解釋為相應的.NET對象,從而在桌面程序上創建相應的控件。

2、WPF編程模型是XAML標記語言和邏輯編程語言(C#)的混合,界面元素以及他們的相互關系是用XAML的節點、屬性以及相互關系來描述的。

3、XAML的根元素常見的主要有2個:Window(用於桌面應用程序)、Page(Web應用程序)。不常見的:FlowDocument、Application和Grid。

4、XAML中命名空間用xmlns屬性表示,並且一個XAML命名空間對應一個或多個.NET命名空間(好處是在XAML中不必寫過多的命名空間)。常用的兩個命名空間是:http://schemas.microsoft.com/winfx/2006/xaml/presentation(默認命名空間)和http://schemas.microsoft.com/winfx/2006/xaml(特定功能--控制XAML編譯器),這兩個命名空間幾乎包含WPF中所有命名空間。

5、使用XmlnsDefinition特性將多個.NET命名空間合並到一個XAML命名空間:在AssemblyInfo.cs文件中

[assembly:XmlnsDefinition("http://www.motyer.cn", "Moty.Utils")]

[assembly:XmlnsDefinition("http://www.motyer.cn", "Moty.UI")]

【擴展】xmlns:x表示的含義:

xmlns:x和xmlns一樣,是申明一個命名空間,區別在於xmlns申明特定屬性的命名空間。比如下面的代碼

<Root xmlns="http://www.motyer.cn"

xmlns:blog="http://www.motyer.cn/blog"

Author="motyer"

CreateTime="2016/12/30"

blog:Count="256"

blog:CreateTime="2016/12/30">

……………………

</Root>

在上面的代碼里面,有2個屬性前面都帶有前綴blog,對於這類屬性的命名空間就是由xmlns:blog指出的,而另外不帶任何前綴的屬性的命名空間是由xmlns指出的。

6、如果要在XAML里面使用自定義的類和屬性,那么必須要先按如下方式引入命名空間:xmlns:custom="clr-namespace:Moty.Utlis.Codec",並且在使用時需要在屬性前面加上前綴custom。

7、WPF開發采用代碼分離(Code Behind)技術,一個WPF應用程序一般由2部分構成:XAML描述UI、C#處理邏輯。

8、排版類元素可以包含多個子元素,內容控件只能包含一個子元素(如:Window)。

9、相關屬性表示方法:

==> 第一種方法(簡潔、推薦)

<DockPanel Background="Red">...</DockPanel>

==> 第二種方法

<DockPanel>

<DockPanel.Background>Red</DockPanel.Background>

</DockPanel>

10、2類標記擴展:

①WPF標記擴展(StaticResource、DynamicResource、Binding、RelativeSource、TemplateBinding);

②XAML標記擴展(x:Type、x:Static、x:null、x:Array)

* x:Type:在XAML中取對象的類型,相當於C#里面的typeof;

* x:null:將目標屬性的值設為null;

* x:Array:在XAML里面創建一個數組

<x:ArrayExtension Type="{x:Type sys:Int32}"

x:Key="myArray">

<sys:Int32>1</sys:Int32>

<sys:Int32>2</sys:Int32>

<sys:Int32>3</sys:Int32>

</x:ArrayExtension>

* x:Static:把某個對象上的屬性或域的值賦給目標對象的相關屬性。

11、XAML使用{}表示擴展,例如:

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

該例使用了2個擴展,Binding、StaticResource,並且是嵌套擴展。

(猜想:可能有一個Binding類,初始化的時候需要給定Source和Path兩個屬性的值。)

12、自定義擴展:新建一個類,繼承MarkupExtension類,重寫ProvideValue方法。

 

武漢螞蹄軟件服務中心主營軟件項目外包,專注於提供中小型軟件定制、網站建設、微信開發和APP開發等商務解決方案。聯系QQ:773347113


免責聲明!

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



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