控件:
1.內容控件------這些控件可以包含嵌套的元素,爲它們提供幾乎無限的顯示能力。內容控件包括Lable,Button 以及ToolTip類。ide
內容控件是更特殊的控件類型,它們能夠包含(並顯示)一塊內容。從技術角度來說,內容控件是能夠包含單個嵌套元素的控件。與佈局容器不一樣的是內容控件只能包含一個子元素,而佈局控件只要願意能夠包含任意多個嵌套元素。
提示:固然,仍然能夠在單個內容控件中放置大量內容-----訣竅是使用單個容器,好比,使用StackPanel面板或Grid面板來包裝全部內容。例如,Window類自己是一個內容控件,顯然窗口經學包含大量內容,但全部內容都包裝到一個頂級容器中(這個容器一般是Grid).佈局
正如在第三章中所學習的,全部WPF佈局容器都繼承自抽象的Panel類,該類提供了對包含多個元素的支持。相似的,全部的內容控件都繼承自抽象的ContentControl類學習
Content屬性
與Panel類提供一個Children集合來保存嵌套的元素不一樣,Control類添加一個Content屬性,該屬性只接受單一對象。Content屬性支持任何類型的對象,可是能夠將該屬性包含的對象分爲兩大類,針對每一類進行不一樣的處理:a:未繼承自UIElenment類的對象 內容控件調用這些控件的ToString()方法獲取文本,而後顯示該文本。
b.繼承自UIElenment類的對象 這些對象(包括全部的可視化元素,它們是WPF的組成部分)使用UIElenment.OnRender()方法在內容控件內部進行顯示。
注意:能夠在內容控件中放置文本內容,國爲XAML解析器會將其轉換爲一個字符串對象,而且使用該字符串對象來設置Content屬性,可是,不能直接在一個佈局容器中旋轉字條串內容,反而,須要使用一個繼承自UIElement的類對字條串進行包裝。spa
Button類表示一直使用的Windows下壓按鈕。它添加了兩個可寫屬性:IsCancel和IsDefault。
若是IsCancel屬性設置爲true,按鈕就成爲窗口取消按鈕,在當前窗口的任何位置若是按下Escape鍵,就會觸發該按鈕。
若是IsDefault屬性設置爲true,按鈕就成爲默認按鈕,它的行爲取決於焦點在窗口中的當前位置。若是焦點位於一個非控件上,若是按下Enter鍵,就會觸發默認按鈕,但若是焦點位於另外一個按鈕上,當前有焦點的按鈕就具備藍色陰影,而且Enter鍵會觸發當前按鈕,而不是默認按鈕。
CheckBox控件和RadioButton控件是不一樣類型的按鈕。它們繼承自ToggleButton類,這意味着用戶能夠切換它們的開與關狀態,即它們的開關行爲。對於checkBox控件,切換到控件的開狀態,意味着在其中放置一個複選標記。CheckBox類沒有添加任何成員,因此CheckBox類的基本接口是在ToggleButton類中定義的,最重要的是,ToggleButton類添加了IsChecked屬性。它是可空的Boolean類型。這意味着該屬性能夠設置爲:true,false,null。顯然:true=選中複選框,而false未選中,null值有點麻煩----------它表示複選框是不肯定狀態。
RadioButton控件 也繼承ToggleButton類,而且使用相同的IsChecked屬性和相同的Checked,此外它還增長了一個GroupName屬性,該屬性用於控制如何對單選按鈕進行分組。單選按鈕一般由它們的容器進行分組,這意味着若是在一 個StackPanel面板中放置三個單選按鈕,那麼這三個單選按鈕就造成一組,並且只能選擇這三個單選按鈕中的一個。另外一方面,若是在這兩個獨立的StackPanel控件中放置一個單選按鈕組合,那麼就有了兩組相互獨立的單選按鈕。經過使用GroupName屬性能夠覆蓋這一默認行爲,可使用該屬性在一個容器中建立多個組,或將包含多個容器中的單選按鈕建立爲一組。
2.帶有標題的內容控件----------------這些控件是容許添加一個主要內容部分以及一個單獨標題部分的內容控件,它們一般用於包裝更大的用戶界面塊。這類控件包括TabItem,GroupBox以及Expander類。
3.文件控件---------------文件控件比較少,它們容許用戶輸入文本,文本控件支持普通文本(Textbox),密碼(PasswordBox) 以及格式化文本(RickTextBox).
4.基於範圍的控件--------------這些控件一般只關心一個屬性:Value,可使用預先規定範圍內的任何數字設置該屬性。例子包括Slider以及ProgressBar類。
5日期控件---------------這類控件包含兩個容許用戶選擇日期的控件:Calendar和DatePicker控件。對象