日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

6 WPF控件

發布時間:2025/6/17 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6 WPF控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WPF控件分類:

  • 內容控件
  • 標題內容控件
  • 文本控件
  • 列表控件
  • 基于范圍的控件
  • 日期控件

控件類

控件是與用戶交互的元素。控件可以獲得焦點,能接受鍵盤或鼠標的輸入。

所有控件的基類是System.Windows.Control類,這類包括一些基本功能:

  • 對齊
  • tab序列
  • 背景、前景、邊界
  • 文本內容的字體

背景和前景刷子

控件包括兩個屬性Background和Foreground屬性,這兩個屬性使用Brush對象。刷子對象的派生類包括SolidColorBrush、LinearGradientBrush、和TileBrush類。

用代碼設置顏色

為名為cmd的按鈕設置背景色:

cmd.Background = new SolidColorBrush(Colors.AliceBlue);

通過Colors類的靜態屬性獲得預定義的顏色,將它傳遞給構造函數創建一個新的SolidColorBrush實例,將它賦值給按鈕的背景屬性。

也可使用系統顏色:

cmd.Background = new SolidColorBrush(SystemColors.ControlColor);

SystemColors類也提供預制的屬性返回SolidColorBrush對象:

cmd.Background = SystemColors.ControlBrush;

你能創造一個顏色對象,依靠提供R,G,B值(紅綠藍)。每個值是從0到255一個數字:

int red = 0; int green = 255; int blue = 0; cmd.Foreground = new SolidColorBrush(Color.FromRgb(red, green, blue));

你能設置顏色的透明度,通過調用Color.FromArgb()方法,為其傳遞alpha值。alpha值為255是完全不透明,而為0是完全透明。

用XAML設置顏色

在XAML中,只需要提供顏色的名字或顏色值,其他的工作由解析器負責。

<Button Background="Red">A Button</Button>

用 #rrggbb 或 #aarrggbb格式提供顏色值:

<Button Background="#FFFF0000">A Button</Button>

刷子支持自動改變通知。刷子從System.Windows.Freezable類派生而來。Freezable類有兩個狀態:可讀狀態,只讀狀態(凍結)

控件類還定義了BorderBrush和BorderThickness屬性。

字體

Control類定義幾個字體相關的屬性。決定控件文本的外觀。這些屬性列在表6-1。

名字描述
FontFamily?
FontSize?
FontStyle?
FontWeight?
FontStretch?

Control類沒有定義任何使用它字體的屬性。然而許多控件包括Text屬性,沒有定義為Control基類的成員。明顯地,除非被派生類使用,字體屬性沒有任何意義。

字體家族

?

鼠標光標

內容控件

內容控件是更特殊的控件類型,它能擁有并顯示一件內容。技術上,內容控件是能包含單個嵌套元素的控件。內容控件與布局容器的區別是,內容控件只能包含一個子元素,而布局容器可以擁有任意個子元素。

當然,你仍然能把多個內容包裝到內容控件中。訣竅是把它們都包裹到單個容器中,諸如一個StackPanel、或一個Grid。例如,Window類本身是一個內容控件。明顯地,窗口經常有大量內容,但是,它們都被包裹在一頂層的容器中(典型地,Grid)。

所有的內容控件起源于ContentControl抽象類。內容控件類主要包括:一些公共控件Label、ToolTip。各種按鈕控件Button、RadioButton、CheckBox。一些更專用的ScrollViewer、UserControl。Window本身是個內容控件。

最后,存在一個內容控件子集,依靠從HeaderedContentControl類派生,增加了一層繼承。包括GroupBox,TabItem,和Expander控件。這些控件有內容區域和標題區域,標題區域用于顯示某種標題。

另外,用于導航的Frame、用于其他控件內部的ListBoxItem、StatusBarItem等也是內容控件。

Content屬性

ContentControl類添加一個Content屬性,接受單個對象。Content屬性支持任何類型的對象,但是它把對象分為兩組,并且區別對待:

  • 不派生自UIElement的對象:內容控件調用ToString()獲得這些控件的文本,然后顯示文本。
  • 派生自UIElement的對象:這些對象包括所有可視元素。使用UIElement.OnRender()方法,被顯示在內容控件內部。

例如,一個提供簡單字符串的按鈕:

<Button Margin="3">Text content</Button>

使用Image類放置一個圖像到按鈕內:

<Button Margin="3"><Image Source="happyface.jpg" Stretch="None" /> </Button>

放置一個包裹圖像和文本的容器到按鈕內:

<Button Margin="3"><StackPanel><TextBlock Margin="3">Image and text button</TextBlock><Image Source="happyface.jpg" Stretch="None" /><TextBlock Margin="3">Courtesy of the StackPanel</TextBlock></StackPanel> </Button>

甚至可以在按鈕中放置其他內容控件,如文本框,按鈕、組合框。雖然這樣做不太合理,但是WPF允許這樣。

Window是內容控件,但是他只能是頂級容器,不能嵌套在其他元素中。

內容控件的其他屬性包括:

HasContent屬性,為真時表示控件有內容。

ContentTemplate屬性,是一個告訴控件如何顯示對象的模板。使用ContentTemplate,更智能地顯示非UIElement派生來的對象。你可以獲取對象的各種屬性值,并整理放入更復雜的標記中。

對齊內容

HorizontalContentAlignment、VerticalContentAlignment取值為Top, Bottom, Left, Right、Center、Stretch

Padding屬性指控件邊界到其內容的距離。

HorizontalContentAlignment,VerticalContentAlignment,和Padding屬性定義在Control類中,不在更特殊的ContentControl類。因為,一些不是內容控件的控件也有某種內容。例如,TextBox不是內容控件,它使用上述屬性設置輸入文本。

WPF內容哲學

內容控件減少了控件的數量,但是,增加了一點控件的復雜度。

標簽(Label)

標簽控件主要的功能是助記鍵,使鏈接控件獲得焦點的快捷鍵。標簽控件的Target屬性指定鏈接控件。為了設置Target,使用綁定表達式指向另一個控件。

<Label Target="{Binding ElementName=txtA}">Choose _A</Label> <TextBox Name="txtA"></TextBox> <Label Target="{Binding ElementName=txtB}">Choose _B</Label> <TextBox Name="txtB"></TextBox>

標簽文本下劃線指明快捷鍵。如果真需要一個下劃線,可以連續輸入兩個下劃線轉義。

同時按下Alt和所指定的快捷鍵,鏈接的控件就會獲得焦點。例如,在本例中,按下Alt+A,焦點就會跳到txtA控件。

如果不需要助記鍵功能,可以考慮使用TextBlock。

按鈕類的控件

按鈕類的控件包括Button、CheckBox、和RadioButton。他們都從ButtonBase派生。

Click支持命令功能。

ClickMode屬性,ClickMode.Release,ClickMode.Press,ClickMode.Hover

按鈕也支持快捷鍵。

按鈕

每個窗口可以有取消按鈕和默認按鈕,通過設置按鈕的IsCancel、IsDefault屬性。詳見159頁。

另外,還有一個容易混淆的IsDefaulted屬性,見160頁側邊條。

ToggleButton、RepeatButton

從ButtonBase派生的類還有三個:

  • GridViewColumnHeader
  • RepeatButton
  • ToggleButton

RepeatButton 和ToggleButton都位于System.Windows.Controls.Primitives名字空間。常用于組合、或派生成其他控件,也可以單獨使用。

CheckBox

CheckBox和RadioButton都是從ToggleButton派生。

ToggleButton添加了一個IsChecked屬性,它是一個可空布爾值。

為了在WPF標記中分配一個空值,使用空標記擴展,如下所示:

<CheckBox IsChecked="{x:Null}">A check box in indeterminate state</CheckBox>

ToggleButton還有一個IsThreeState屬性,它決定是否可以設置復選框為未定態。默認為false。

ToggleButton類定義三事件:Checked,Unchecked,和Indeterminate事件。

RadioButton

默認情況下,單選按鈕按它們的容器分組。RadioButton的GroupName屬性允許你覆蓋這行為。

<StackPanel><GroupBox Margin="5"><StackPanel><RadioButton>Group 1</RadioButton><RadioButton>Group 1</RadioButton><RadioButton>Group 1</RadioButton><RadioButton Margin="0,10,0,0" GroupName="Group2">Group 2</RadioButton></StackPanel></GroupBox><GroupBox Margin="5"><StackPanel><RadioButton>Group 3</RadioButton><RadioButton>Group 3</RadioButton><RadioButton>Group 3</RadioButton><RadioButton Margin="0,10,0,0" GroupName="Group2">Group 2</RadioButton></StackPanel></GroupBox> </StackPanel>

不需要使用GroupBox容器包裹單選按鈕組,但這是一個普遍的約定。GroupBox顯示一個邊界和一個標題。

專用的容器

內容控件也包括一些專用的容器。

ScrollViewer直接從ContentControl繼承。

ContentControl類派生了HeaderedContentControl類,這個類包括一個標題和一個內容。標題和內容都可以嵌套單個子元素。HeaderedContentControl類派生了幾個子類:GroupBox,TabItem,和Expander。

ScrollViewer

盡管ScrollViewer能包裹任何元素,但是一般情況下,它包裹一個布局容器。

<ScrollViewer><Grid Margin="3,3,10,3"></Grid> </ScrollViewer>

VerticalScrollBarVisibility屬性,此屬性是ScrollBarVisibility枚舉。Visible、Auto、Disabled。默認值是Visible。

HorizontalScrollBarVisibility屬性,默認值是Hidden。

編程控制滾動

詳見171頁。

自定義滾動

詳見172頁。

GroupBox

GroupBox從HeaderedContentControl類派生。

<GroupBox Header="A GroupBox Test" 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>

GroupBox仍然要求一個布局容器布置內容。GroupBox沒有特別的功能,只是一個裝飾控件。

TabItem

TabItem代表TabControl的一個選項卡。TabItem類添加了IsSelected屬性,指示選項卡是否是TabControl當前顯示的選項卡。

<TabControl Margin="5"><TabItem Header="Tab One"><StackPanel Margin="3"><CheckBox Margin="3">Setting One</CheckBox><CheckBox Margin="3">Setting Two</CheckBox><CheckBox Margin="3">Setting Three</CheckBox></StackPanel></TabItem><TabItem Header="Tab Two">...</TabItem> </TabControl>

通過設置TabControl的TabStripPlacement屬性,可以將選項卡從正常的頂部放到側邊。

正如Content屬性,Header屬性能接受任何類型的對象。這是一個例子:

<TabControl Margin="5"><TabItem><TabItem.Header><StackPanel><TextBlock Margin="3" >Image and Text Tab Title</TextBlock><Image Source="happyface.jpg" Stretch="None" /></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><TabItem Header="Tab Two"></TabItem> </TabControl>

Expander

見175頁。

文本控件

WPF包括三文本輸入控件:TextBox,RichTextBox,和PasswordBox。PasswordBox直接從Control派生。TextBox和RichTextBox控件派生自TextBoxBase。

不同于內容控件,文本框僅限于他們能包含的內容類型。TextBox永遠存儲一個字符串(Text屬性)。PasswordBox也處理字符串內容(Password屬性),盡管它使用SecureString。只有RichTextBox有能力存儲更世故的內容:一個FlowDocument。

多行文本

MaxLength屬性,設置TextBox允許的最大字符數。

TextWrapping屬性,設置為Wrap或WrapWithOverflow,表示自動換行。

MinLines和MaxLines屬性,設置TextBox的最小(最大)可見的行數。

LineCount屬性,可以檢索出文本框中的文本有多少行。

VerticalScrollBarVisibility、HorizontalScrollBarVisibility屬性,設置滾動條的可視狀態。

AcceptsReturn屬性,設置為真表示TextBox接受回車。默認情況下,TextBox不接受回車。

AcceptsTab屬性為真表示接受Tab鍵,默認情況下,TextBox不接受Tab鍵。

IsReadOnly屬性,阻止編輯文本。

文本選擇

見180頁。

拼寫檢查

見181頁。

密碼框

見183頁。

列表控件

列表控件的基類是ItemsControl類。

每個ItemsControl類都有項目列表。有二種方法填充項目列表。最直白的方法是直接添加項到項集合,使用代碼或XAML。更常用的方法是數據綁定。這種方法是設置ItemsSource屬性為要顯示的數據項集。

ItemsControl類派生的一個主要分支為Selector類,包括ListBox, ComboBox,和TabControl類。可以跟蹤當前選擇項(SelectedItem),或它的位置(SelectedIndex)。

其余的列表類不支持當前項,直接從ItemsControl類派生。這些類包括Menu、Toolbar、TreeView等。

ListBox

設置SelectionMode屬性為Multiple可以多選。在多選模式下,要使用SelectedItems集合而不是SelectedItem。

添加列表框項:

<ListBox><ListBoxItem>Green</ListBoxItem><ListBoxItem>Blue</ListBoxItem><ListBoxItem>Yellow</ListBoxItem><ListBoxItem>Red</ListBoxItem> </ListBox>

ListBoxItem派生自ContentControl。

例如,創建一個圖像的列表框:

<ListBox><ListBoxItem><Image Source="happyface.jpg"></Image></ListBoxItem><ListBoxItem><Image Source="happyface.jpg"></Image></ListBoxItem> </ListBox>

可以省略上例的ListBoxItem,列表框足夠智能,可以識別列表項:

<ListBox><StackPanel Orientation="Horizontal"><Image Source="happyface.jpg" Width="30" Height="30"></Image><Label VerticalContentAlignment="Center">A happy face</Label></StackPanel><StackPanel Orientation="Horizontal"><Image Source="redx.jpg" Width="30" Height="30"></Image><Label VerticalContentAlignment="Center">A warning sign</Label></StackPanel><StackPanel Orientation="Horizontal"><Image Source="happyface.jpg" Width="30" Height="30"></Image><Label VerticalContentAlignment="Center">A happy face</Label></StackPanel> </ListBox>

下面是一個列表項為復選框的例子:

<ListBox Name="lst" SelectionChanged="lst_SelectionChanged"CheckBox.Click="lst_SelectionChanged"><CheckBox Margin="3">Option 1</CheckBox><CheckBox Margin="3">Option 2</CheckBox> </ListBox>

如果你沒有使用ListBoxItem填充列表項,當你讀SelectedItem值時,將不會得到ListBoxItem對象,而是你放置到列表中的對象。在上例中,SelectedItem將提供一個CheckBox對象。

下面代碼獲取當前的選擇項,顯示該項目是否被選中。

private void lst_SelectionChanged(object sender, SelectionChangedEventArgs e) {if (lst.SelectedItem == null) return;txtSelection.Text = String.Format("You chose item at position {0}.\r\nChecked state is {1}.",lst.SelectedIndex,((CheckBox)lst.SelectedItem).IsChecked); }

如果你希望知道哪一個項目失去選擇,你能使用SelectionChangedEventArgs對象的RemovedItems屬性。類似地,AddedItems屬性告訴你哪一個項目被添加到選擇。在單選模式,無論何時選擇改變,永遠是一項目被添加和一項目被移除。在multiple或extended模式,就不一定了。

下面是遍歷列表項目集合的代碼:

private void cmd_ExamineAllItems(object sender, RoutedEventArgs e) {var sb = new StringBuilder();foreach (CheckBox item in lst.Items){if (item.IsChecked == true){sb.Append(item.Content);sb.Append(" is checked.");sb.Append("\r\n");}}txtSelection.Text = sb.ToString(); }

ListBoxItem也有一些額外的功能:IsSelected屬性、Selected事件和Unselected事件。這些功能也可以通過ListBox的SelectedItem屬性和SelectionChanged事件實現。

有趣地,存在一個技術,當你使用嵌套對象方法時,獲取指定對象的ListBoxItem包裹器。訣竅是ContainerFromElement()方法。這是使用這個技術的代碼檢查第一項目是否是列表的被選擇項:

var item = (ListBoxItem)lst.ContainerFromElement((DependencyObject)lst.SelectedItems[0]); MessageBox.Show("IsSelected: " + item.IsSelected.ToString());

?

ComboBox

組合框用法與列表框基本相同。

如果你允許用戶通過在組合框鍵入文本來選擇一個項目,你必須設置IsEditable屬性為true,并且你必須確保你存儲平凡的僅文本的ComboBoxItem對象,或一個提供有意義的ToString()表示法的對象。例如,如果你填充一個可編輯的帶有圖像對象組合框,文本出現在上面的部分是Image類的全名,這不是非常使用。

基于范圍的控件

基于范圍的控件基類是RangeBase類,從Control類派生。包括ScrollBar, Slider, 和ProgressBar類。RangeBase類的屬性包括:

Value、Maximum、Minimum、SmallChange、LargeChange

因為有ScrollView控件,ScrollBar很少用。現在關注Slider和ProgressBar。

Slider

見188頁

ProgressBar

見190頁

日期控件

見190頁。

轉載于:https://www.cnblogs.com/cuishengli/p/3351511.html

總結

以上是生活随笔為你收集整理的6 WPF控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: aaaaa级少妇高潮大片免费看 | 国产无毛片 | 国产精品毛片一区视频播 | 成年人视频免费看 | 亚洲开心网 | 蜜桃网站 | 国产三级在线观看 | 高清成人 | 色94色欧美sute亚洲线路二 | 国产www精品 | 亚洲欧洲色图 | 日韩av中文字幕在线播放 | 日韩av中文字幕在线 | 亚洲综合网站 | 7777在线视频 | 色偷偷av男人的天堂 | 国产十八熟妇av成人一区 | 香蕉婷婷 | 97成人精品 | 成年人免费看毛片 | 亚洲视频二 | 亚洲精品一区二区三区婷婷月 | 五十路在线视频 | 看全黄大色黄大片 | 中文字幕 视频一区 | 肉丝超薄少妇一区二区三区 | 电影91久久久 | 网站在线播放 | 国产高清视频免费 | 久久久国际精品 | 欧美在线v | 一区二区三区国产av | 在线观看免费高清在线观看 | 中文字幕乱码亚洲精品一区 | 欧美一区影院 | 人乳喂奶hd无中字 | 2025国产精品视频 | 久久免费观看视频 | 毛片在线网 | 国产极品美女高潮无套在线观看 | 国产精品福利一区二区三区 | 日韩精品伦理 | 胸网站 | 成人影院免费 | 国产中文在线视频 | 水蜜桃久久 | 国产高清一区 | 亚洲成人午夜影院 | 加勒比综合网 | 最污的网站 | 免费看91的网站 | 97人妻一区二区精品视频 | www.com日本 | av中文字幕免费在线观看 | 狠狠干in | 五月婷婷在线视频 | 少妇媚药按摩中文字幕 | 日韩淫 | 免费黄色在线观看 | 日本在线色 | 免费在线观看黄色av | 迈开腿让我尝尝你的小草莓 | 欧美日韩网站 | 国产日本在线观看 | 亚洲综合免费观看高清完整版 | 久久小草| 欧美丰满老妇 | 韩国女主播一区二区 | 男女作爱免费网站 | 久久黄色小视频 | 日韩一区二区三区视频在线 | 久久久久无码国产精品 | 亚洲最大福利 | 男人和女人日b视频 | 欧美一区永久视频免费观看 | 婷婷色综合网 | 日韩一及片 | 看污片网站 | 华人永久免费视频 | 久久久蜜桃一区二区 | 欧美a级大片 | 九九热在线免费观看 | 亚洲精品在线播放视频 | 欧美野外猛男的大粗鳮 | 激情小说视频在线 | 色噜噜在线播放 | 成人黄色片免费 | 视频一区国产精品 | 国产网址 | 在线观看国产一区二区三区 | 亚洲性生活大片 | 韩国裸体网站 | 国模私拍在线观看 | 变态 另类 国产 亚洲 | 日韩激情av | 夜夜av| 原创少妇半推半就88av | 最新中文字幕在线观看视频 | 在线观看9.1 |