WPF基礎之內容控件

 內容控件(content control)

     內容控件(content control)是更特殊的控件類型,他們可包含並顯示一塊內容。從技術角度看內控控件是可以包含單個嵌套元素的控件。與佈局控件不同的是,內容控件只能包含一個字元素,而佈局容器只要願意可以包含任意多個嵌套元素。
當然仍可以在當個元素中放置大量內容,訣竅是使用單個容器,比如StackPanel或Grid面板來封裝所有內容。
所有內容控件都繼承自ContentControl。
 

 Content屬性

       與Panel類提供的Children集合來保存嵌套的元素不同,Control類添加了Content屬性,改屬性只接受單一對象。

 對齊內容

在容器中對齊內容用HorizontalAlignment和VerticalAlignment來對齊控件,然而一旦控件包含了內容,就需要考慮另一個組織級別。需要決定內容控件中的內容和邊框對齊,這是通過使用
HorizontalContentAlignment和VerticalContentAlignment屬性來實現的。

 標籤

標籤具有記憶符,記憶符是能夠爲連接的控件設置焦點的快捷鍵。
 <Label Target="{Binding ElementName=txtA}">Choose A</Label>
 <TextBox Name="txtA"></TextBox>
如果需要顯示不需要記憶符內容,使用更輕量級的TextBlock元素。TextBlock元素通過它的TextWrapping屬性支持換行。

 按鈕 Button

  • IsCancel屬性,true按鈕就成爲窗口的取消按鈕。在當前窗口的任何位置如果按下Esc鍵,就會觸發該按鈕。
  • IsDefault屬性,true,按鈕就會成爲默認按鈕。默認按鈕具有藍色陰影。如果焦點位於非按鈕控件上,按enter就會觸發默認按鈕。如果焦點在按鈕上就會觸發當前按鈕。
ToggleButton控件和RepeatButton
  • GridViewColumnHeader類,當使用基於網格的ListView控件時,該類可以表示一列可以單擊的標題。
  • RepeatButton類,只要按鈕保存按下的狀態,該類就不斷地觸發Click事件。
  • ToggleButton類,改類表示有兩個狀態(按下按鈕和未按下按鈕)。當單擊ToggleButton時,它會保持按下狀態,直到再次單擊改按鈕以釋放它爲止。

 CheckBox控件

繼承自ToggleButton,有"開關"行爲。
IsChecked:true、false、null。null表示不確定的狀態,帶有陰影的複選框。
  <CheckBox IsChecked="{x:Null}">checkbox</CheckBox>

 RadioButton

RadioButton類也繼承自ToggleButton類。增加了GroupName屬性,改屬性用於控制如何對單選按鈕進行分組。
單選按鈕通常由它們的容器就行分組。這意味着,如果StackPanel面板中放置三個單選按鈕,那麼這三個單選按鈕就形成了一組,而且只能選擇這三個按鈕中的一個。

 工具提示

WPF工具提示提供了一個靈活的模型。因爲WPF中工具提示是內容控件,所以可在工具提示中放置任何可視化元素。還可以改變各種時間設置來控制工具提示的顯示和隱藏速度。
可爲可視化元素設置ToolTip屬性。ToolTip屬性實在FrameworkElement類中定義的,所以有能放到WPF窗口上的元素都可以使用該屬性。
 <Button ToolTip="this is a tootip"></Button>
複雜的TooTip
<Grid>
        <Button  MinHeight="30" MinWidth="90" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center">
            <Button.ToolTip>
                <StackPanel>
                    <TextBlock Margin="3">Iamge and text</TextBlock>
                    <Image Source="http://f.hiphotos.baidu.com/image/pic/item/a6efce1b9d16fdfa0af12ccabf8f8c5494ee7b71.jpg"></Image>
                    <TextBlock Margin="3">Iamge and text</TextBlock>
                </StackPanel>
            </Button.ToolTip>
            <Button.Content>test tooltip</Button.Content>  
        </Button>
    </Grid>
 
不要在工具提示欄中放置與用戶進行交互的控件,因爲ToolTip控件不能接收焦點,如果創建包含其他控件,並與工具提示類似的窗口可考慮用Popup控件。

 Popup控件

Popup控件只能包含單一內容,該單一內容可以包含任何WPF元素,改內容存儲在Popup.Child屬性中,而不像ToolTip.Content屬性中。
 
  • Popup永遠不會自動提示。爲顯示Popup控件,必須設置IsOpen屬性。
  • 默認情況下,如果PopUp.StaysOpen屬性被設置爲true,並且PopUp會一直提示,知道明確的將IsOpen屬性設置爲False爲止,如果PopUp.StaysOpen屬性被設置爲false.那麼當用戶在其他地方
點擊鼠標時,那麼Popup就會消失。
  • Popup控件提供了PopupAnimation屬性,當IsOpen屬性設置爲true時,通過該屬性可控制Popup控件進入視野的方式。需設置AllowsTransparency屬性設置爲true。
  1.  None 默認值
  2. Fade彈出窗口的透明度逐漸增加
  3. Scroll 彈出窗口將從窗口的左上角滑入。
  4. Slide彈出窗口將從上向下滑入。
  • Popup控件可接收焦點。因此,可在其內部放置與用戶交互的控件,該功能是使用Popup控件而不使用Tooltip控件的主要原因之一。    
  <Popup Name="popLink" StaysOpen="False" Placement="Mouse" MaxWidth="200"
               PopupAnimation="Slide" AllowsTransparency="True">
            <Border BorderBrush="Beige" BorderThickness="2" Background="White">
                <TextBlock Margin="10" TextWrapping="Wrap">
                    text
                </TextBlock>
            </Border>
        </Popup>

 ScollViewer

如果希望讓大量的內容適應有限的控件,滾動條是總要屬性之一。
通過代碼進行滾動。
  • LineUp()和LineDawn()向上向下滾動,相當於在滾動滑塊上面單擊滾動條。
  • PageUp()和PageDawn()。這兩個方法向上或向下滾動一整屏。
  • LineLeft()、LineRight()、PageLeft()、PageRight() 水平滾動。
  • ScrollToEnd、ScrollToHome滾到內容的頂部和底部。ScrollToVerticalOffset()。

 GroupBox

<GroupBox Header="A Group Box" Padding="5" Margin="5" VerticalAlignment="Top">
            <StackPanel>
                <RadioButton Margin="3">One</RadioButton>
                <RadioButton Margin="3">Two</RadioButton>
                <RadioButton Margin="3">Three</RadioButton>
                <Button Margin="3">Save</Button>
            </StackPanel>  
        </GroupBox>

 TabItem

TabItem表示TabControl空間中的一頁。TabItem類唯一的屬性是IsSelected,改屬性表示選項卡是否顯示在TabControl中。
 
<TabControl Margin="3">
            <TabItem>
                <TabItem.Header>
                    <StackPanel>
                        <TextBlock Margin="3">Image and Text Tab Title</TextBlock>
                        <Image Source="http://f.hiphotos.baidu.com/image/pic/item/a6efce1b9d16fdfa0af12ccabf8f8c5494ee7b71.jpg"></Image>
                    </StackPanel>
                </TabItem.Header>
                <StackPanel Margin="3">
                    <CheckBox Margin="3">Setting One</CheckBox>
                    <CheckBox Margin="3">Setting Two</CheckBox>
                    <CheckBox Margin="3">Setting Three</CheckBox>
                </StackPanel>
            </TabItem>
        </TabControl>

 Expander

封裝了一塊內容,通過小箭頭顯示或隱藏所包含的內容。擴展器的擴展方向默認是Down,但也可以將ExpandDirection屬性設置爲Up、Left或Right。
 
<Expander Margin="5" Padding="5" Header="ReionOne">
            <StackPanel Margin="3">
                <CheckBox Margin="3">Setting One</CheckBox>
                <CheckBox Margin="3">Setting Two</CheckBox>
                <CheckBox Margin="3">Setting Three</CheckBox>
            </StackPanel>
        </Expander>

 ListBox

ListBox控件是一個非常靈活的控件,它不僅可以包含ListBoxItem對象,也可以駐留其他的任意元素,這是因爲ListBoxItem繼承自ConentControl,從而ListBoxItem能夠包含一嵌套的內容。
      
  <ListBox>
            <ListBoxItem>
                <Image Source="http://f.hiphotos.baidu.com/image/pic/item/a6efce1b9d16fdfa0af12ccabf8f8c5494ee7b71.jpg"></Image>
            </ListBoxItem>
            <ListBoxItem>
                <Image Source="http://f.hiphotos.baidu.com/image/pic/item/a6efce1b9d16fdfa0af12ccabf8f8c5494ee7b71.jpg"></Image>
            </ListBoxItem>
            <ListBoxItem>
                <Image Source="http://f.hiphotos.baidu.com/image/pic/item/a6efce1b9d16fdfa0af12ccabf8f8c5494ee7b71.jpg"></Image>
            </ListBoxItem>
        </ListBox>
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章