WPF控制元件繼承自 System.Windows.Control 類,包括以下控制元件:
- 內容控制元件:可包含嵌套的元素,包括 Label,Button,ToolTip,ScrollViewer
- 帶標題的內容控制元件:通常用于封裝更大的用戶界面塊,包括 TabItem,GroupBox,Expander
- 文本控制元件:支持輸入文本,包括 Textbox,PasswordBox,RickTextBox
- 串列控制元件:包括 ListBox,ComboBox
- 基于范圍的控制元件:通常只有共同的屬性 Value,包括Slider,ProgressBas
- 日期控制元件:包括 Calendar,DataPicker
內容控制元件
內容控制元件可包含并顯示一塊內容,與布局容器不同的是,只能包含一個子元素,內容控制元件都繼承自抽象類 ContentControl .
Content屬性
Content屬性支持任何型別的物件,但可分為兩大類:
- 未繼承自 UIElement 類的物件: 呼叫這些控制元件的 ToString() 方法獲取文本
- 繼承自 UIElement 類的物件:使用 UIElement.OnRender() 方法進行顯示
HorizontalContentAlignment,VerticalContentAlignment 以及 Padding 屬性都是在 Control 類中定義,而非 ContentControl 類中定義,這是因為有些控制元件不是內容控制元件也需要包含某些型別的內容,
標簽
Label 控制元件支持 記憶符(mnemonics)-能夠為鏈接的控制元件設定焦點的快捷鍵,
<Label Target="{Binding ElementName=txtA}"> Choose _A</Label>
<TextBox Name="txtA"/>
<Label Target="{Binding ElementName=txtB}"> Choose _B</Label>
<TextBox Name="txtB"></TextBox>
按鈕
ButtonBase 定義了 Click 事件并添加了對命令的支持,添加了 ClickMode 屬性,
Button
Button 添加了兩個可寫屬性:
- IsCancel 設定為ture時,按鈕就成為視窗的取消按鈕,在任何位置按下 Esc鍵就會觸發
- IsDefault 設定為true時,按鈕就成為默認按鈕
ToggleButton 和 RepeatButton
- GridViewColumnHeader 使用ListView時,該類表示一列可以單擊的標題
- RepeatButton 只要按鈕保持按下狀態就不斷觸發
- ToggleButton 有兩個狀態的按鈕
CheckBox
CheckBox 繼承自 ToggleButton ,可以切換開關狀態,
RadioButton
RadioButton 繼承自ToggleButton,增加了 GroupName 屬性進行分組,
并非一定使用 GroupBox 容器封裝單選按鈕,但通常約定如此,GourpBox控制元件顯示一條邊框和標題,
工具提示
WPF中工具提示是內容控制元件,可以放置任何可視化元素,可控制工具提示的顯示和隱藏速度,
<Button ToolTip="This is my toolTip"> I have a tooltip </Button>
<Button Content="I have a fancy tooltip">
<Button.ToolTip>
<StackPanel>
<TextBlock Margin="3"> Image and text</TextBlock>
<Image Source="happy.jpg" Stretch="None"/>
<TextBlock Margin="3">Image and text</TextBlock>
</StackPanel>
</Button.ToolTip>
</Button>
特殊容器
內容控制元件不僅包括基本控制元件,如標簽、按鈕以及工具提示;還包括特殊容器,可用于構造用戶界面比較大的部磁區域,
ScrollViewer
為了獲得滾動支持,需要在 ScrollViewer 控制元件中封裝希望滾動的內容,
通過代碼進行滾動
- LineUp() 和 LineDown() ,向上或向下滾動滾動一整屏,
- 用于水平滾動的類似方法,包括 LineLeft(),LineRight(),PageLeft(),PageRight()
- ScrollToXxx() 滾動到任何特定位置,ScrollToEnd() 和 ScrollToHome()可以滾動到內容的頂部和底部,ScrollToVerticalOffset() 可以滾動到特定位置,ScrollToLeftEnd(),ScrollToRightEnd(),ScrollToHorizontalOffset().
自定義滾動
- 在ScrollViewer中放置元素,是實作了 IScrollInfo 介面的任意元素
- 將ScrollViewer.CanContentScroll 設定為true
- ScrollViewer控制元件通過 IScrollInfo 介面來呼叫元素的方法
GroupBox
GroupBox 顯示為具有圓角和標題的方框,仍需要布局容器來布置內容,GroupBox 經常使用對數量不多的相關控制元件進行分組,比如幾個單選按鈕,
TabItem
TabItem 表示TabControl控制元件中的一頁,
與Content屬性一樣,Header屬性可接受任何型別的物件,繼承自 UIElement 的類通過渲染來顯示,對于行內文本以及其他所有物件使用 ToString() 方法,
Expander
Expander 是具有標題的內容控制元件,封裝了一塊內容,通過單擊小箭頭按鈕可顯示或隱藏內容,在線幫助以及 Web 頁面經常使用這種技術,
可以使用 ExpandDirection 設定為 Up,Left 或 Right
文本控制元件
PasswordBox 控制元件直接繼承自Control類,TextBox和RichTextBox控制元件間接繼承自 TextBoxBase 類,
多行文本
TextBox可以設定 MaxLength 來限制字符的數量,如果 TextWrapping=Wrap 是在控制元件的邊緣換行;如果TextWrapping=WrapWithOverflow 允許拉伸某些行使其超出右邊緣,
通過 VerticalScrollBarVisibility 設定為 Visible 或 Auto,添加始終顯示或按需顯示的滾動條,
選擇文本
TextBox 還提供了使用 SelectionStart,SelectionLength 以及 SelectedText 屬性來決定選擇哪些文本或改變當前所選文本的能力,Undo 功能允許用戶撤銷最近的操作,
拼寫檢查
設定 TextBox 的 SpellCheck.IsEnabled 屬性即可拼寫檢查,
串列控制元件
串列控制元件繼承自 ItemsControl ,該類添加了所有基于串列的控制元件都使用的基本功能,
ListBox
ListBox 不僅可以包含ListBoxItem物件,也可以是其他任意元素,ListBoxItem繼承自 ContentControl 類,
<ListBox>
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<Label VerticalContentAlignment="Center">A happy face</Label>
<Image Source="happy.jpg"/>
</StackPanel>
</ListBoxItem>
</ListBox>
ListBox 能夠隱式創建所需要的 ListBoxItem 物件,此時 SelectedItem 值是放到串列中的物件,
ComboBox
ComboBox控制元件包含 ComboBoxItem 物件,既可以顯示地也可以隱士地創建該集合,設定 IsEditable = true,可以允許用戶通過輸入文本選擇一項,
基于范圍的控制元件
ScrollBar,ProgressBar,Slider 都繼承自 RangeBase 類,這些控制元件用在特定最小值和最大值之間的數值,
| 屬性 | 說明 |
|---|---|
| Value | 當前值,默認從0開始 |
| Maximum | 最大值 |
| Minimum | 最小值 |
| SmallChange | Value屬性為“小變化”向上或向下調整的數量,對于ScrollBar和Slider是使用箭頭鍵時值改變的量 |
| LargeChange | Value屬性為“大變化”向上或向下調整的數量,對于ScrollBar和Slider是使用 PageUp和PageDown鍵或單擊滑塊兩側時值改變的量 |
Slider
音量控制時,背后的數字對于用戶來說是沒有意義的,是 Slider 典型的應用,
| 屬性 | 說明 |
|---|---|
| Orientation | 豎直或水平 |
| Delay Interval | 按下滑動條兩側時,移動速度 |
| TickPlacement | 刻度顯示的位置 |
| TickFrequency | 設定刻度之間的間隔,決定了顯示多少刻度 |
| Ticks | 如果希望在特定不規則位置顯示刻度,可使用 Ticks 集合 |
| IsSnapToTickEnabled | 當移動滑塊會自動跳轉到最近的刻度標記 |
| IsSelectionRangeEnabled | 可使用選擇范圍使滑塊條的一部分顯示陰影 |
ProgressBar
ProgressBar 控制元件只是長時間運行任務的進度,不能與用戶互動,需要代碼遞增 Value 屬性值,如果將 IsIndeterminate = true ,會周期性顯示從左向右跳動的綠色脈沖,用于長時間運行或者不知道執行多少時間的情況,
我的公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355999.html
標籤:WPF
