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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

控件与布局(WPF)

發(fā)布時(shí)間:2025/4/16 asp.net 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控件与布局(WPF) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是本人對于學(xué)習(xí)WPF的筆記。

參考資料:《深入淺出WPF》、MSDN、some Blogs…

?

內(nèi)容大概:

1)6類控件介紹及派生關(guān)系

2)WPF的UI元素類型介紹

3)內(nèi)容模式的詳解

4)UI布局簡介

?

控件

控件無外乎6類:

1)布局控件:Grid、StackPanel、DockPanel等等這些可以容納其他控件或者說是嵌套其他控件,主要用于UI上的組織和排列。共同的父類是Panel。

2)內(nèi)容控件:Window、Button等屬于這類,只能容納一個(gè)控件作為其內(nèi)容。共同父類ContentPanel。

3)帶標(biāo)題內(nèi)容控件:顧名思義,比內(nèi)容控件多個(gè)標(biāo)題。典型代表:GroupBox、TabItem….共同父類HeaderedContent。

4)條目控件:ListBox、ComboBox等,可以顯示一列數(shù)據(jù)。共同父類ItemsControl。

5)帶標(biāo)題條目控件:比條目控件多個(gè)Header。TreeVievItem、MenuItem等典型代表。基類為HeaderedItemsControl。

6)特殊內(nèi)容控件:這類控件相對是獨(dú)立的。有TextBox、TextBlock等等

派生關(guān)系:

?

WPF的UI元素的類型

?

各類內(nèi)容模型詳解

1)ContentControl家族

特點(diǎn):

1.基類均為ContentControl

2.都是控件[Control]

3.內(nèi)容屬性名稱為Content

4.只能由單一元素充當(dāng)其內(nèi)容

重點(diǎn)理解“只能由單一元素充當(dāng)其內(nèi)容”。最好的解釋莫過于用Coding了。

以Button為例:第一個(gè)Button的內(nèi)容為一個(gè)靜態(tài)文本,第二個(gè)button的內(nèi)容為一張圖片

<Button Margin="5"> <TextBlock Text="Hello Li.Lin"></TextBlock> </Button> <Button Grid.Row="1" Margin="5"> <Image Source="img.jpg" Width="60" Height="60"></Image> </Button>

?

run:

假如你想在同一個(gè)Button中既顯示TextBlock又要顯示image:

<Button Margin="5"> <TextBlock Text="Hello Li.Lin"></TextBlock> <Image Source="img.jpg" Width="60" Height="60"></Image> </Button>

?

error:報(bào)錯(cuò)說[屬性“Content”已設(shè)置多次]。

ContentControl家族的控件有:

?

2)HeaderedContentControl家族

?

特點(diǎn):

1.都派生自HeaderedContentControl,HeaderedContentControl派生自ContenControl。

2.用于顯示帶標(biāo)題的數(shù)據(jù)。

3.除了顯示主題內(nèi)容的區(qū)域外,還有一個(gè)顯示Header的區(qū)域。

4.內(nèi)容屬性分為Content和Header。

5.無論是Content還是Header都只能容納一個(gè)元素作為其內(nèi)容。

?

包含的控件有:Expander、GroupBox、headeredContentControl、TabItem。

?

做個(gè)GroupBox的Coding:

<GroupBox Margin="10" BorderBrush="SlateBlue"> <GroupBox.Header> <Image Source="img.jpg" Width="20" Height="20"></Image> </GroupBox.Header> <GroupBox.Content> <TextBlock TextWrapping="WrapWithOverflow" Margin="10" Text="Li.Lin is a programer learning wpf..."></TextBlock> </GroupBox.Content> </GroupBox>

Run:

?

3)ItemsControl家族

特點(diǎn):

1.都派生自ItemsControl。

2.都是控件,用于顯示列表化數(shù)據(jù)。

3.內(nèi)容屬性為Items或ItemsSource。

4.每種ItemsControl都對應(yīng)有自己的條目容器(Item Container)。

?

ItemsControl家族包含控件有:

?

ListBox是ItemsControl的典型代表,下面以它為例:

<ListBox Margin="5"> <ListBoxItem> Li.Lin </ListBoxItem> wpf <ListBoxItem> <CheckBox x:Name="checkBoxName" Content="LiLin"></CheckBox> </ListBoxItem> <ListBoxItem> <Button x:Name="BtnWpf" Content="WPF"></Button> </ListBoxItem> /ListBox>

?

Run:

注意!其中的 wpf 沒有包含在<ListBoxItem>…</ListBoxItem>中,是因?yàn)檫@對標(biāo)簽是可以省略的。也就是說,無論你把什么數(shù)據(jù)或數(shù)據(jù)集合丟給ListBox,它都會以<ListBoxItem>…</ListBoxItem>包裝,因此我們完全可以不寫。

不過,大多數(shù)情況下,ListBox是用來動態(tài)顯示后臺的數(shù)據(jù),而非控件。

接著Coding:

程序中定義一個(gè)Employee類:

public class Emplayee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }

再定義一個(gè)Employee類型的集合:

List<Emplayee> employeeList = new List<Emplayee>() { new Emplayee(){Id=1,Name="LiLin",Age=23}, new Emplayee(){Id=2,Name="Tom",Age=26}, new Emplayee(){Id=3,Name="Guo",Age=29}, new Emplayee(){Id=4,Name="Yan",Age=20}, new Emplayee(){Id=5,Name="Tom",Age=30}, };

在程序的主界面上定義一個(gè)名為listBoxEmployee的ListBox。接下來我們寫:

this.listBoxEmployee.DisplayMemberPath = "Name"; this.listBoxEmployee.SelectedValuePath = "Id"; this.listBoxEmployee.ItemsSource = employeeList;

?

Run:

DisplayMemberPath這個(gè)屬性的value是只ListBox顯示數(shù)據(jù)的屬性。也就是說,ListBox會去調(diào)用這個(gè)屬相的ToString()方法,把得到的字符串放入一個(gè)TextBlock(文本控件),then再Textblock放入ListBoxItem中。這是簡單的顯示,需要復(fù)雜的顯示就需要用到DataTemplate。

SelectedValuePath屬性與SelectValue屬性配合使用。

以下列出ItemsControl對應(yīng)的Item Container:

?

HeaderedItemsControl家族

該家族控件除了具有ItemsControl的特性外,還具有顯示Header 的能力。

特點(diǎn):

1.均派生自HeaderedItemsControl類。

2.都是控件,用于顯示列表化數(shù)據(jù),同事顯示一個(gè)標(biāo)題。

3.內(nèi)容屬性有:Items、ItemsSource、Header。

本家族控件有MenuItem、TreeViewItem、ToolBar。

Decorator家族

該家族在UI上期裝飾效果。如Border元素把一些內(nèi)容加邊框;在ViewBox元素里的內(nèi)容可以自由縮放。

特點(diǎn):

1.均派生自Decorator類。

2.起UI裝飾作用。

3.內(nèi)容屬性為Child。

4.只能由單一元素充當(dāng)內(nèi)容。

家族元素:

TextBox和TextBlock

這兩個(gè)都是用來顯示文本。區(qū)別是TextBlock只能顯示不能編輯;TextBox允許編輯文本。除了這個(gè)區(qū)別,它們的內(nèi)容屬性也不一樣。TextBlock由于需要操縱格式,其內(nèi)容屬性為InLines(行),同時(shí)保留Text屬性。而TextBox得內(nèi)容屬性為Text。

Sharp家族

Sharp家族元素是視覺元素,而非控件,內(nèi)容自己的內(nèi)容。不過可以用Fill屬性填充效果,Stroke屬性設(shè)置邊線。

特點(diǎn):

1.均派生自Sharp。

2.用于2D圖形繪制。

3.無內(nèi)容屬性。

4.使用Fill屬性設(shè)置填充,使用Stroke屬性設(shè)置邊線。

Panel家族

這是一個(gè)用于UI布局的家族。該家族特點(diǎn):

1.均派生自Panel抽象類。

2.控制UI布局。

3.內(nèi)容屬性為Children。

4.內(nèi)容可以為多個(gè)元素,并控制它們的布局。

本家族元素:

UI布局(Layout)簡介

WPF是專門的用戶界面技術(shù),因此布局功能是它的核心功能之一。在WPF的布局元素中,既有像傳統(tǒng)的Windows Form和APS.NET的絕對坐標(biāo)定位元素,也有像HTML頁面那樣用行列定位的。

WPF多了一個(gè)Content的概念——包含。以窗體為根,整個(gè)WPF的UI形成樹形結(jié)構(gòu),叫做可視化樹。

WPF的布局元素屬于Pane家族。

WPF中的布局元素:

1.Grid:網(wǎng)格。類似HTML中的Table。

2.StackPanel:棧式面板。豎直或水平排成一條直線。

3.Canvas:畫布。絕對坐標(biāo)定位,類似于Windows Form的布局。

4.DockPanel:泊靠式面板。

5.WrapPanel:自動折行面板。排滿一行自動折行,類似HTML中的流式布局。

?

BTW

鄙人初涉WPF,望多多指導(dǎo)。

轉(zhuǎn)載于:https://www.cnblogs.com/lnetmor/archive/2011/11/20/2256251.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。