WPF控件簡介
經過上一篇XAML語言的介紹,咱們知道,XAML是一個樹形結構,一樣,WPF控件做爲構成整個XAML樹的一部分,也是一個樹形結構。咱們看一個簡單的例子。瀏覽器
<Button.Content>
<DockPanel>
<Image Source="F:\01.Code\01.MyCode\WpfApplication1\WpfApplication1\Resources\荷.jpg" Width="30"/>
<TextBlock Text="紅色" Foreground="Red" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="綠色" Foreground="Green" VerticalAlignment="Center"/>
<TextBlock Text="藍色" Foreground="Blue" VerticalAlignment="Center"/>
</DockPanel>
</Button.Content>
界面展示效果如圖:ide
![image image](http://static.javashuo.com/static/loading.gif)
沒有接觸過WPF的朋友可能會驚訝,一個button裏怎麼會有那麼多內容?咱們能夠經過VS的對象瀏覽器查看Button類的繼承關係爲:工具
Button->ButtonBase->ContentControl->Control->FrameworkElement。佈局
FrameworkElement是全部WPF界面元素的展示基類(FrameworkElement向上繼承自UIElement->Object),Button繼承ContentControl,使得Button具有了一個容器控件應有的特性,即容許Button擁有一個Content,而這個Content能夠爲另外一個容學習
器或控件,至於裏面具體是什麼,徹底取決於你想要什麼。這也正是WPF的魅力所在,任何控件都是一個樹形結構,且樹形結構的每一級均可以自由定製,理論上咱們能夠自定義任何一個層級的樣式,來實現任何咱們想要的界面展示效果。spa
WPF控件分類
上面咱們講到了Button繼承自ContentControl,應該說是屬於一個內容控件,下面咱們系統的對WPF控件進行一下分類,按照我本身的理解,咱們有兩種分類方法。指針
1、按照控件的繼承特性分類code
咱們先看一下整個WPF界面元素類之間的繼承關係:orm
![image image](http://static.javashuo.com/static/loading.gif)
- Panel:佈局控件,包括Canvas、DockPanel、StackPanel等,能夠容納多個基本控件(Control)或者嵌套其餘佈局控件。用於總體界面的佈局,Panel下的控件咱們會在下一篇講解。
- Control:基本控件
- ContentControl:內容控件,其內容只能是一個基本控件或佈局控件,一般使用一個佈局控件做爲其Content,而後在佈局空間裏使用多個基本空間,從而實現複雜的界面效果,其下基本控件有Label、Button、Tooltip。
- HeaderContentControl:帶標題的內容控件,繼承自ContentControl,在ContentControl的基礎上,增長了一個Header屬性。其下基本控件有TabItem、GroupBox等
- ItemsControl:多條目控件,其下基本控件有ListBox、Menu等
- HeaderItemsControl:繼承自ItemsControl,增長了Header屬性,其下控件有MenuItem、TreeViewItem、ToolBar等
- TextBox:基本文本輸入控件。
- TextBlock、Image:直接繼承自FrameworkElemet基類,屬於最普通的基本控件。
2、按照控件的感官特性分類對象
這裏的感官特性我定義的是,站在一個普通用戶的角度上,能看到、感知到的東西。這裏講WPF控件分爲兩類:
一、 基本控件:用戶能夠看到並與之交互的控件,如按鈕、輸入框等,主要涵蓋上述的Control、TextBlock、Image部分
二、 佈局控件:用戶察覺不到的,卻對這個系統界面佈局有着決定性做用的容器類控件,主要涵蓋上述Panel及其子類部分
文章在之後的描述中將以這種分類方法進行闡述。
WPF控件屬性
經過上面的介紹,咱們知道全部的控件(基本控件、容器控件)都繼承自FrameworkElement這個基類,這個基類裏定義了WPF控件用到的大部分屬性,咱們這裏先對這些WPF控件都具備的屬性進行介紹(經常使用的標紅),後續分別介紹經常使用基本控件時再對獨有的屬性進行介紹。
- ActualHeight:獲取此元素的呈現高度。
- ActualWidth:獲取次元素的呈現寬度。
- BindingGroup:獲取或設置用於該元素的 System.Windows.Data.BindingGroup
- ContextMenu:獲取或設置該元素的上下文菜單,一般是郵件菜單。
- Cursor:獲取或設置當鼠標指針懸停在此元素上時顯示的光標
- DataContext:獲取或設置元素參與數據綁定時的數據上下文。
- DefaultStyleKey:在使用或定義主題樣式時,獲取或設置用於引用此控件的樣式的鍵。
- FlowDirection:獲取或設置文本和其餘UI元素在控制它們佈局的任何父元素中的流動方向。是一個枚舉值。默認值爲 System.Windows.FlowDirection.LeftToRight
- FocusVisualStyle:獲取或設置一個屬性,該屬性支持自定義將在此元素捕獲鍵盤焦點時應用於此元素的外觀、效果或其餘樣式特徵
- ForceCursor:獲取或設置一個值,該值指示此元素是否應該強制UI按照Cursor屬性所聲明的方式呈現光標。
- Height:獲取或設置元素的建議高度。
- HorizontalAlignment:獲取或設置在父元素(如面板或項控件)中構成此元素時應用於此元素的水平對齊特徵。
- InputScope:獲取或設置此元素使用的輸入上下文
- IsInitialized:獲取一個值,該值指示此元素是否已初始化。
- IsLoaded:獲取一個值,該值指示是否已加載此元素以供呈現。
- Language:獲取或設置適用於某個元素的本地化/全球化語言信息
- LayoutTransform:獲取或設置在執行佈局時應該應用於此元素的圖形轉換方式。
- LogicalChildren:獲取此元素的邏輯子元素的一個枚舉器。
- Margin:獲取或設置元素的外邊距。認值是全部屬性都等於 0(零)的 System.Windows.Thickness。
- MaxHeight:獲取或設置元素的最大高度約束。
- MaxWidth:獲取或設置元素的最大寬度約束。
- MinHeight:獲取或設置元素的最小高度約束。
- MinWidth:獲取或設置元素的最小寬度約束。
- Name:獲取或設置元素的標識名稱。該名稱提供一個引用,以便當 XAML 處理器在處理過程當中構造標記元素以後,後臺代碼能夠對該元素進行引用。
- OverridesDefaultStyle:獲取或設置一個值,該值指示此元素是否合併了主題樣式中的樣式屬性。
- Parent:獲取此元素的邏輯父級元素。
- Resources:獲取或設置本地定義的資源字典。
- Style: 獲取或設置此元素在呈現時使用的樣式。
- Tag: 獲取或設置一個可用於存儲有關此元素的自定義信息的任意對象值。
- TemplatedParent: 獲取一個對此元素的模板父級的引用。若是此元素不是經過模板建立而成,則此屬性並不相關
- ToolTip: 獲取或設置在UI中爲此元素顯示的工具提示對象。
- Triggers: 獲取直接在此元素上創建或在子元素中創建的觸發器的集合。
- VerticalAlignment:獲取或設置在父元素(如面板或項控件)中組合此元素時應用於此元素的垂直對齊特徵。
- VisualChildrenCount: 獲取此元素內的可視化子元素的數目。
- Width: 獲取或設置元素的寬度。
其中讀寫屬性(帶有獲取或設置描述的屬性)能夠在XAML中使用,只讀屬性(只有獲取描述的屬性)只能在後臺代碼中使用。
WPF控件聲明
經過一個簡單的Button的定義闡述一下Wpf控件的使用
一、 在XAML中聲明
能夠從工具箱找到Button控件直接拖拽到窗體上,而後會在相應位置生成一條XAML語句,我的推薦使用手寫XAML的方式,確保控件出如今你想要的地方。
<Button Height="30" Width="120" Name="myButton"/>
這條語句聲明瞭一個Button對象,且該Button對象的名稱爲myButton,高度爲30,寬度120,咱們在後臺代碼能夠直接訪問並使用這個對象,如:經過
mybutton.Height=25;可將該Button對象的高度修改成25。
二、 在後臺.CS代碼中聲明
Button myButton = new Button();
myButton.Height = 30;
myButton.Width = 100;
下一篇咱們將學習WPF中Label、TextBLock、Button、TextBox等基本控件的使用方法。