?1、WPF 體系結構
a)WPF(Windows Presentation Foundation)Windows 表現層
b)歷史變遷
i.C++ /VB? ---2003年之前----與Sun競爭
ii.DotNet平臺(C#、VB、C++)???? C#(C->C++->C#/CSharp)
iii.開發工具Visual Studio2003->vs2005->vs2008->vs2010
iv.開發語言C#1.0(CLR)->C#2.0(匿名、泛型)->C#3.0(LinQ、Lambda)->C#4.0
v.運行時環境DotNet Framework1.1->2.0->3.5->…(托管代碼處理GDI,調用底層的OS下的API(如user32.dll))
vi.推出背景:配合下一代OS技術(Window Seven/Vista)(非托管代碼處理DirectX,矢量技術,性能受影響)
vii.與Window Form孑然不同
c)見圖:繪圖使用DirectX技術
?
2、WPF 應用程序管理、事件、生命周期
a)Application啟動
i.Startup事件訂閱加載方法
this.Startup += new System.Windows.StartupEventHandler(this.Application_Startup);
ii.設定Application的StartupUri
b)關閉
i.當我們啟動了很多窗口的時候,這些窗口繼宿在主線程內,當所有窗口關閉時,應用程序自動退出
ii.Application.Current.Shutdown();不同于this.close();
iii.常見事件
iv.生命周期見圖
v.源代碼?MSIL?機器語言(先編譯后解釋)
?
3、WPF 窗體與導航—基于代碼
a)項目常見設置
i.AssemblyInfo.cs中設置產品信息(描述,版本…)
ii.設置產品圖標*.ico,程序集名
b)常見屬性、方法、事件
i.屬性
1.Tilte:標題
2.Icon:窗口
3.ResizeMode:是否能大化、小化、拉伸窗口邊框
4.WindowStyle:設置窗口的外部樣式
5.WindowStartupLocation:窗口啟動后出現的位置
6.Opacity:設置透明度
7.Topmost:窗口將永遠置于頂層.?
9.Left、Top、Width、Height:設置窗口呈現的坐標以及大小
10.Forground/Background:設置前、背景色
11.Font---:字體的相關信息
12.IsEnabled:設置對象是否啟用/禁用
13.Tag:任何對象隱藏的屬性,可用于保存一些額外的信息
ii.方法
1.Show()
2.ShowDialog():窗口的返回值由DialogResult來設置
3.A窗口向B窗口傳遞值:
a)在B窗口中設置一個屬性,然后A窗口中實例化B時,賦值給B中的該屬性(在多窗口中傳值不頻繁的時候使用,以及傳遞的數據并不多的時候)
b)定義一個靜態類,以及若干靜態成員,然后通過get/set訪問器來實現獲取或設置值(在多窗口之間頻繁的傳遞值,以及窗口之間傳遞值過多時)
iii.事件
iv.SystemParameters獲取系統的環境設置信息
v.?
c)模式與非模式窗口
d)基于頁面的用戶界面
類似于java中的 Applet程序,在一個沙箱內部運行WPF的程序,對外部數據的訪問受限制,從而達到安全目的。
與SilverLight的區別: SilverLight利用頁面插件來工作的,XBP則是運行在CLR之上的程序.
e)導航服務
i.頁面跳轉的方式:
1.內部標簽<Hyperlink>來實現跳轉
2.導航服務來實現跳轉
ii.其他的設計與WPF下的設計雷同
f)不規則窗體
i.繪圖標簽
ii.窗體過濾
g)消息框
i.MessageBox.Show(x,y,z,m,n)
?
4、XAML 與XML
a)XAML數據
i.XAML是XML的子集,遵循了XML的語言結構
ii.XML是可拓展的標記語言,也是元語言,XAML就是在XML的基礎上拓展而來
iii.XAML基本規范:
1.標記是成對出現的.<標記>數據</標記>
2.標記區分大小寫
3.只有唯一的根元素<Window></Window>
4.標記支持嵌套,呈現出父子元素關系
5.每一個元素的名稱、屬性名都是有意義的
6.如果元素內部無數據,那么<Image> </Image>可改寫為<Image/>,稱為空元素
7.XAML中Window的子級元素僅有一個
8.命名空間: 避免了元素和屬性的重名問題
i.在XML體系中,分三部分(XML數據+DTD/Schema結構+XSL/XSLT樣式),在XAML中,數據與結構是合并在一起。
ii.XAML中元素的結構是比較固定的,數據穿插在結構內部,作為元素的一部分
iii.XAML是遵循Schema結構的
c)Dom文檔結構
i.XML文檔被編譯器解釋時,將轉化為樹模型,XAML中同理
ii.查看文檔大綱可查看XAML中元素樹的結構
d)XAML分析
i.XAML語言與XML語言的關系。
XAML是XML的子集,XAML中,元素結構也是由Schema決定
ii.XAML語言與代碼后置
iii.XAML文檔樹
iv.x命名空間
(x:Class, x:Name, x:Key, x:Shared,x:Type,x:Static,x:Array, x:Null)
v.XAML瀏覽器應用程序XBAP?
vi.WPF的結構文件 Schema位置:
C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas\wpfe.xsd
C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas\xaml2006.xsd
vii.Xsd分析
1.元素類型
a)復合類型: <xs:complexType>有從屬的子元素
b)簡單類型: <xs:simpleType>,沒有從屬的子元素
2.數據類型
a)元素<xs:element>
b)屬性<xs:Attribute>
3.Xsd片段分析
a)這里定義了元素Image的子元素和屬性的結構
?
5、WPF輸入輸出、焦點行為
a)鍵盤類和鍵盤事件
b)鼠標類和鼠標事件
c)焦點行為處理(鍵盤焦點、邏輯焦點、鍵盤導航)
?
6、WPF容器、布局
a)StackPanel、WrapPanel、DockPanel?
i.StackPanel:堆疊布局,可選擇橫向或縱向的排列循序
ii.WrapPanel:流式布局
iii.DockPanel:方位布局
b)Grid、 UniformGrid
a)Grid:表格布局,多行多列結構,可實現跨行或跨列
?
7、WPF控件模型
1.ContentControl 模型:具有 Content屬性
a)Content中元素可以是數據,也可以是子元素,注意子元素是單個元素
參閱C12中Demo01.xaml
b)ContentControl繼承關系: 參閱C12中Demo01.xaml
c)控件詳解:
1)Button元素: 參閱C12中Demo02.xaml
2.HeaderedContentControl 模型
3.ItemsControl模型
4.HeaderedItemsControl 模型
?
8、WPF內容模型
1.Panel內容模型
2.Decorator內容模型?
3.TextBlock模型
4.Text模型
?
9、WPF數據綁定
5.綁定源與綁定目的區分
6.綁定源的分類,綁定語法
7.數據模板
8.WPF綁定ADO.NET數據源
9.WPF綁定到LINQ
? |