支援高解析度顯示是WPF中的重要樣式。這是被部分地支援——強調了可伸縮的向量圖,而不是映像。但是,正如使用GDI+和GDI32顯示的,如果延展性沒有完全整合到映像化構架中,獨立的解析度實際上是非常難於達到連續性的。WPF對伸縮的支援是建立在一個基礎的層級。任何使用者介面中的元素都可以應用一個轉換,使得伸縮和旋轉任何事物都很容易。所有的使用者介面元素都有一個transform類型的RenderTransform屬性。這是一個抽象的基類。從這個基類中派生的類實現了各種仿射性的轉換:旋轉、縮放、變形以
WPF為我們架構一個應用程式的使用者介面提供了相當大的彈性。但是,功能越強大,需要注意的就越多。我們必須避免使使用者迷失在不協調而且過分裝飾的前端。一個應用程式的使用者介面應該是內在協調的,而且,應用程式之間不光區別在視覺化上,更多的是,對於使用者所選擇的作業系統的視覺主題,在感觀上都是一致的。在上章,我們已經看到樣式和模板是如何允許我們控制應用程式的外觀。這些都是基於WPF的資源(Resource),從而使得建立一個在視覺上一致得應用程式更加容易,而且這樣做不會犧牲彈性。如果你想要建立一個圖形
命名樣式非常有用,當你得到一組屬性並應用到特點的元素上。然而,如果你想要應用一個統一的樣式到所有確定元素類型的執行個體,設定TargetType而不用一個Key,如樣本5-16所示。樣本5-16<!-- no Key --><Style TargetType="{x:Type Button}"> <Setter Property="FontSize" Value="32" /> <Setter Property="FontWeight" Value=
在asp.net ajax 1.0中,有相當多的ajaxtoolkit好的控制項,這裡選一些十分精彩的來進行介紹1)slideshow控制項。這個控制項十分好,可以開發一個簡單的相簿控制項 首先,必須要有一個web服務照片的提供通過後端Web Services來完成,可通過SlideShowServiceMethod 屬性指定要提供照片的Web Method(或Page Method)名稱,該Web Method聲明的方式如下:
WPF極易建立可視化的極好的應用程式。它提供了十分豐富的繪圖能力,而且用來充分開發當今顯卡的能力。這就支援設計者建立複雜的設計和使用動畫,使UI比以往更加容易蘇醒。WPF的圖形架構不僅適用於開發人員。WPF中圖形支援的主要方面是它的深層次綜合其餘的編程模型。它易於添加圖形化元素到應用程式的一部分中,而不用困惑於編程技術的改變——需要很多使用者介面技術。由於WPF是一種表現技術,圖形是一種重要的和實質的一部分架構。單獨使用WPF圖形化能力填充整本書——這將是可能的,因此我們只能真正的在表面上塗抹。
樣式支援你定義一個策略來設定可視化元素的相依性屬性。屬性的設定可以被命名以及手動或者編程方式地通過名稱應用,或者使用元素類型樣式來自動應用。除了提供不變的相依性屬性值之外,樣式可以包含基於條件的屬性值——基於相依性屬性,資料屬性或者事件。還有,如果設定屬性並不足以擷取到你尋求的外觀,你可以替換一個非可視化的控制項,使用控制項範本產生全部的控制項行為。但這並不是樣式的全部。要瞭解動畫是如何工作的,你可以閱讀第8章;要瞭解樣式是如何關聯到資源和主題以及皮膚的,你可以閱讀第6章。
WPF提供了資源工具,讓我們運用在使用者介面中,動態並具有一致性。我們可以在資源字典中儲存任意資源,並且可以遍及應用程式引用這些資源。WPF的樣式機制依賴於資源字典——通過為控制項設定屬性和模板,基於應用程式的皮膚或當前的系統配置主題。而且,對於二進位資源,包含了編譯後的BAML版本的xaml檔案,WPF使用明顯的本地化ResourceManager體系,為終端使用者選取最適合的資源作為使用者介面的文化。
每一個“可樣式化”的WPF元素都有一個Style屬性,可以在內部設定這個屬性——使用XAML屬性-元素的文法(在第一章討論的),如樣本5-4。樣本5-4<Button x:Name="cell00" /> <Button.Style> <Style> <Setter Property="Button.FontSize" Value="32" /> <Setter Property="Button.FontWeig
Canvas是最精確的版面配置容器——絕對位置,此書作者不建議使用,以為控制項的大小一般會隨著內部字型圖片的動態產生而自動變化,所以使用前三種布局是最好的選擇,在這一點上,我也持同樣意見。Canvas使用Top/Bottom屬性控制距離頂部/底部的高度;使用Left/Right屬性控制距離左/右的距離。有趣的是,調整Form的大小,第二個TextBlock的位置會相應變化,但和底部以及右邊的距離是不變的,代碼見下:<Canvas Background="Yellow"> <T
如果你打算髮布你的應用程式到全球各地,你可能需要為不同地區的使用者介面準備不同的版本。至少,這需要解決將文本翻譯成適當的語言;同樣需要解決UI改變的問題。你可能需要特定的外觀適應為本地化的文化習俗。或者,你可能會發現原始的外觀在翻譯後並不能正常工作,因為詞的長度是不一樣的。(雖然WPF的外觀體系避免了這一問題,更易於建立更彈性的外觀。)為你的軟體在不同的市場建立不同的版本是可能的。儘管如此,更加普遍的辦法是建立一個單獨的版本來適應於不同的場所,通過在運行期選取一個合適的資源檔。WPF的底層架構R
總而言之,對文檔的處理,“樣式”是應用到某個範圍內容的一組屬性,如文本、映像等等。舉例來說,我們正在使用的樣式名為“Normail,Body,b”,並用於預出版的文檔,這意味著使用10號Times字型,完全對齊。文檔的稍後部分,我們將要使用名為“Code,x,s”的樣式,這將使用9號Courier
儘管ResourceDictionary和系統層級的資源適合於作為資料存在於對象中,然而,並不是所有的資源都能很好的滿足這個模型。能夠處理二進位流通常是很有用的。例如,映像,聲頻和視頻,都是有效地二進位的代表,但是這些資源在xaml內都沒有相應的標籤,而且畢竟這些對象通常表現為底層資料的封裝。標記語言本身代表了一種挑戰:xaml頁面必須編譯到我們的應用程式中。因此,需要一種處理二進位流的方法。WPF並未引進任何新技術處理位元據。.NET架構已經提供了處理內嵌二進位流的機制,WPF只是簡單使用了這
StackPanel用於小規模的排版布局,比如說一個局部下幾個textbox和Button啦。Orientation屬性有Vertical和Horizontal兩種選擇,決定布局方向。所有控制項都有Margin屬性,用來使控制項之間不那麼擁擠,Margin隨Vertical和Horizontal的不同而所加的空白方向不同,當然Margin=“3,3”意味著同時在兩個方向上有空白。HorizontalAlignment屬性用來調整控制項的拓展方向。預設是Stretch,即橫向有多少地方佔多少地方,
這一節老沒意思,囉裡囉唆的儘是些HTML的屬性,挑幾個好玩的List出來,備忘:Padding與Margin的區別:Margin指控制項邊界與外界的間隙;Padding指的是控制項內部內容與控制項邊界的間隙。兩者可以同時使用。不再支援 RenderTransform= "scale
讀完了這一節,發現DockPanel就是過去winform中的Dock屬性。原來的Dock屬性是子控制項設定,而其父親層級不用設定。現在WPF改為在父親層級抽象出一個DockPanel,然後設定其下子控制項的Dock屬性。<DockPanel LastChildFill="True"> <Button DockPanel.Dock="Left">Left</Button> <Button DockPanel.Dock="Right">R
這一節介紹的是文字布局的幾個控制項:1.TextBlock 最基本的文字控制項可以配置5個Font屬性。TextWraping屬性,"Wrap"是換行,NoWrap是不換行(原書有誤,在此更正)。TextBlock控制項內可以放置很多控制項,不光是文字。<TextBlock TextWraping="Wrap"> <Button>Split</Button> <CheckBox>across</CheckBox>
書中的代碼文法過時了,改寫為以下(測試通過): <Button> <Button.LayoutTransform> <ScaleTransform ScaleX="3" ScaleY="3" /> </Button.LayoutTransform> <StackPanel Orientation="Horizontal">
資源的另一個用途是樣式設定:<Window > <Window.Resources> <Style x:Key="myStyle" TargetType="{x:Type TextBlock}"> <Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="FontWeight" Value="Bold" /> &
根本上講,資料繫結是關於在一個地方保持資料,例如,在另一個地方,一個控制項的屬性,在資料上同步一個對象的屬性。在這一章,我們從深度和廣度上遍曆了資料繫結引擎這一基礎概念,以及大量牽連到的,包括基於對象和XML資料格式的條目和列表,基於資料目標的條目和列表,管理當前項,值的轉換,排序,過濾,資料範本,甚至主從頁面的關係。在WPF的每一層對資料繫結的徹底支援,使之成為優秀的樣式,在某種程度上資料繫結並不像以往那樣。你會發現它已經滲透到WPF程式中的方方面面,包括樣式,這將是下一章的主題。
終於,看明白了,已經是淩晨1:39分。這本書這一節寫得實在是不好,一個local搞得我糊裡糊塗,於是,準備按照他的思路,按照我的理解,改寫一遍,包括原始碼。首先,這句話WPF新版本已經不用了:<?Mapping XmlNamespace="local" ClrNamespace="DataBindingDemo"