數據層(Database,Oracle等)算法
業務邏輯層(Service,Data Access Layer,WCF)數據庫
表示層(WPF,Win Form,ASP.net,Silverlight)設計模式
【WPF開發方法論】數組
AS-IS:UI事件驅動程序運行(Win Form)——TO-BE:數據驅動程序運行並顯示在UI上(WPF)app
XAML:WPF技術中專門用於設計UI的語言。框架
邏輯樹(logical tree):不考慮控件內部的組成結構,只觀察由控件組成的「樹」。佈局
可視元素樹(visual tree):連控件自己的樹也考慮在內,稱之爲「可視元素樹」。性能
Visual Tree 包含 Logical Tree,visual tree的範圍更大。.net
【UI佈局】設計
Grid適用的 場合
1. UI佈局大框架的設計。
2. 大量UI元素須要成行或者成列對齊的狀況。
3. UI總體尺寸改變時,元素須要保持固有的高度和寬度比例。
4. UI後期可能有 較大的變動或擴展。
【MVVM】
Model-View-View Model
View能夠綁定Behavior/Comand來調用ViewModel的方法。Command是View到ViewModel的單向通行,經過實現IComand接口來實現綁定,讓View觸發事件,ViewModel來處理事件,以解決事件綁定功能。
ViewModel(視圖模型)主要包括界面邏輯和模型數據封裝,Behavior/Command事件響應處理,綁定屬性定義和集合等。它是View和Model的橋樑,是對Model的抽象
Model與MVC模式同樣,Model用於封裝與應用程序的業務邏輯相關的數據以及對數據的處理方法。它具備對數據直接訪問的權利,例如對數據庫的訪問,Model不依賴於View和ViewModel
【XML Binding】
XPath使用「@」符號加字符串表示的是XML元素的Attribute,不加@符號的字符串表示的是子級元素。
【Binding】
通常來講,
Source- 程序內部元素
Target-GUI上的外部元素
Binding數據驗證,數據轉換。
路由事件(Routed Event):路由事件的事件擁有者和事件的相應者之間則沒有直接的顯式訂閱關係,事件的擁有者則只負責激發事件,事件將有誰相應它並不知道,事件的響應者則有事件的監聽器,針對事件進行監聽,當有此類事件傳遞至此事件響應者就使用事件處理器來相應事件並決定此事件是否繼續傳遞。
什麼樣的對象才能做爲Binding的目標來使用?——依賴屬性與依賴對象。
必需要使用依賴屬性於依賴對象的原理是什麼?爲什麼其餘的對象不能夠實現Binding?
依賴對象(Dependency Object):對象在被建立的時候,並不包含用於存儲數據的空間(即字段所佔用的空間)、只保留在須要用到數據時可以得到默認值、借用其餘對象數據或實時分配空間的能力。
依賴屬性(Dependency Property):實時分配內存空間,用來檢索真正的屬性值(存儲的是由CLR包裝器名hash code和宿主類型名hash code執行異或運算的結果),而並不是存儲實際屬性值。
(實際屬性值是存儲於全局的Effective Value Entry數組中)
爲何WPF在性能上還不盡人意?
WPF借依賴屬性的算法(時間)換取了對內存(空間)的節省。?
可傳遞的消息模型——WPF路由事件
當一個路由事件被激發後是沿着Visual Tree傳遞的,只有這樣,藏在Template裏的控件才能把消息送出來。
建立自定義路由事件
(1) 聲明並註冊路由事件。
EventManager.RegisterRoutedEvent()方法的四個參數
路由事件的名稱
路由事件策略(Bubble, Tunnel, Direct)
指定事件處理器的類型
路由事件的宿主(擁有者)類型
(2) 爲路由事件添加CLR事件包裝器。
(3) 建立能夠激發路由事件的方法。
RoutedEventArgs 屬性 Handled——true則事件再也不向下傳遞,false事件繼續向下傳遞
屬性 Source ——Logical Tree上的消息源頭
屬性 OriginalSource——Visual Tree上的消息源頭
附加事件:沒有界面渲染功能的宿主對象,可使用附加事件與其餘對象進行溝通
命令與事件的區別:事件不具備約束力,而命令是具備約束力的。(消息的接收者如何響應事件?)
WPF的命令實際上就是:實現了ICommand接口的類,平時使用最多的是RoutedCommand類
當一個命令到達目標後具體執行的業務邏輯不是由命令決定的,而是外圍的CommandBinding捕獲到命令目標受命令激發而發送的路由事件後在其Executed事件處理器中完成。
關於「自定義Command」部分沒有讀懂。如何在XAML和partial class中定義user control
形而上者,謂之道。形而下者,謂之器。
在咱們可以觀察到的世間萬物的形象之上抽象的結果就是思惟,而形象之下掩蓋的則是其本質。
形而上者謂之道——基於現實世界對萬物進行抽象,封裝(面向對象思想)以及對象之間最優組合關係(設計模式思想)
形而下者謂之器——咱們能觀察到的世間萬物都是物質本質內容的表現形式。
【資源】
四個等級:
1. 數據庫資料 ——倉庫
2. 資源文件 ——旅行箱
3. WPF對象資源 ——揹包
4. 程序變量 ——手中
對象級資源:每一個界面元素均可以攜帶本身的資源並可被本身的子級元素共享。
Pack URI路徑格式:pack://application,,,[/程序集名稱;][可選版本號;][文件夾名稱/]文件名稱
例:pack://application:,,,/Resources/Images/topBanner.jpg
WPF Template分爲兩大類
1. ControlTemplate 控件的外衣
2. DataTemplate 數據的外衣