最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF常見(jiàn)布局面板用法及介紹

 更新時(shí)間:2022年01月25日 10:47:48   作者:痕跡g  
本文詳細(xì)講解了WPF常見(jiàn)布局面板用法及介紹,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

常見(jiàn)的幾個(gè)布局面板

1.StackPanel面板

StackPanel面板能夠簡(jiǎn)單根據(jù)單行或者單列進(jìn)行元素排列, StackPanel 默認(rèn)的布局方向?yàn)榇怪狈较?Vertical), 由Orientation屬性控制。

Orientation屬性:

用戶控制布局方向是垂直還是橫向排列。分別有兩個(gè)值可選:Vertical、Horizontal

示例代碼:

<StackPanel Orientation="Vertical">
    <Button>button1</Button>
    <Button>button2</Button>
    <Button>button3</Button>
</StackPanel>

效果圖(如上面所述 StackPanel面板Orientation屬性默認(rèn)為Vertical):

設(shè)置 Orientation="Horizontal" 時(shí), 控件布局方向則為橫向, 效果圖。

默認(rèn)情況下, StackPanel面板中的元素都會(huì)根據(jù)StackPanel的大小而改變, StackPanel面板指定了Width和Height值。

布局屬性:

VerticalAlignment當(dāng)垂直方向有額外的空間, 可以選擇Top、Center、Bottom、Stretch進(jìn)行設(shè)置布局
HorizontalAlignment當(dāng)水平方向有額外的空間, 可以選擇Center、Left、Right、Stretcj進(jìn)行設(shè)置布局
Margin

相對(duì)控件的4個(gè)邊、設(shè)置邊距,可以單獨(dú)設(shè)置各個(gè)邊距,也可以統(tǒng)一設(shè)置一個(gè)邊距

類似:Margin="1 2 3 4" 或 Margin="1"

【VerticalAlignment/HorizontalAlignment】屬性:

為了能夠看到效果, 通常預(yù)留控件額外的空間, 示例, 默認(rèn)的StackPanel面板中添加幾組按鈕, 剩下的白色區(qū)域?yàn)轭~外的空間。

這個(gè)時(shí)候, 針對(duì)StackPanel面板設(shè)置VerticalAlignment屬性為Center, 此時(shí)所有的子元素被居中顯示,額外的空間被均分。

注:而B(niǎo)ottom、Top、Stretch 則分別表示整體元素居下,居上、整體伸展。

默認(rèn)情況下, StackPanel面板的VerticalAlignment、HorizontalAlignment 默認(rèn)屬性均為 Stretch

<!-- StackPanel -->
<StackPanel VerticalAlignment="Center">
    <Button>button1</Button>
    <Button>button2</Button>
    <Button>button3</Button>
</StackPanel>

效果圖:

Margin(邊距)屬性:

正如前人書中所說(shuō), 一個(gè)設(shè)計(jì)良好窗口不止是包含元素、還應(yīng)當(dāng)在元素之間包含一定的額外空間。所以這個(gè)時(shí)候Margin屬性派上用場(chǎng)。

以上的示例圖中, 均沒(méi)有設(shè)置Margin屬性, 所以會(huì)看到的是, 每個(gè)元素之間都緊貼。

當(dāng)設(shè)置邊距時(shí), 可以統(tǒng)一設(shè)置元素所有邊的距離, 如下所示:

<!-- StackPanel -->
   <StackPanel>
       <Button Margin="3">button1</Button>
       <Button Margin="3">button2</Button>
       <Button Margin="3">button3</Button>
   </StackPanel>

另外一種,則是分別對(duì)元素的邊: 左、上、右、下的順序設(shè)置邊距, 如下所示:

<!-- StackPanel -->
   <StackPanel>
       <Button Margin="3 6 3 3">button1</Button>
       <Button Margin="3">button2</Button>
       <Button Margin="3">button3</Button>
   </StackPanel>

2.WarpPanel面板

與StackPanel面板類型, WarpPanel面板也是以行或列的形式進(jìn)行元素排列, 默認(rèn)情況下, WarpPanel面板的Orientation屬性則為Horizontal,元素以橫向進(jìn)行排列。

注意:與StackPanel面板不同的是, WarpPanel默認(rèn)情況下, 所有元素均不會(huì)被拉伸。這里要強(qiáng)調(diào)的一點(diǎn): StackPanel中, 元素會(huì)根據(jù)Orientation屬性進(jìn)行拉伸,

1.當(dāng)Orientation="Horizontal"時(shí), 元素被垂直拉伸

2.當(dāng)Orientation="Vertical"時(shí), 元素被水平拉伸

示例圖:

同樣的, WarpPanel面板具備StackPanel的屬性。區(qū)別則在于上面的不同。

3.DockPanel面板

用過(guò)winform的小伙伴應(yīng)該都知道, 在winform中, 幾乎所有的空間都具備Dock??繉傩? 可以針對(duì)元素進(jìn)行單獨(dú)設(shè)置Dock定位。然而在WPF中, 這點(diǎn)顯然是不具備的。

所以對(duì)于靈活的WPF來(lái)說(shuō), DockPanel面板具備了這個(gè)能力。凡是包含在DockPanel面板中的子元素, 都會(huì)具備Dock附加屬性。

下圖所示, 對(duì)DockPanel進(jìn)行簡(jiǎn)單的添加元素設(shè)置Dock屬性:

示例代碼:

<DockPanel>
    <Button DockPanel.Dock="Top">button1</Button>
    <Button DockPanel.Dock="Right" >button2</Button>
    <Button DockPanel.Dock="Left">button3</Button>
</DockPanel>

注意:DockPanel的LastChildFill屬性, 主要用于設(shè)置DockPanel中最后一個(gè)元素的會(huì)具備填充效果。如上圖的button3元素

LastChildFill 字面意思則可以理解, 最后一個(gè)元素是否填充。通過(guò)設(shè)置true/false,

效果圖(LastChildFill="false") :

<DockPanel <strong>LastChildFill="False"</strong>>
       <Button DockPanel.Dock="Top">button1</Button>
       <Button DockPanel.Dock="Right" >button2</Button>
       <Button DockPanel.Dock="Left">button3</Button>
   </DockPanel>

4.Grid面板

Grid面板類型HTML中的table表格, 為了能夠讓元素或內(nèi)容按照規(guī)定的位置排列, 首先得定義足夠得行和列。

注意: Grid中定義得Row與Column屬性默認(rèn)在元素中都是從0開(kāi)始索引, 在下面示例中,為了演示都進(jìn)行了添加(如果在程序中,位置已經(jīng)確定, 可以默認(rèn)不加)。

定義行與列( RowDefinitions/ColumnDefinitions)

<Grid>
  <strong>  <!-- 下面分別定義了2行 2列 --></strong>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
 
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
</Grid>

添加元素:

下面為Grid定義得2行2列基礎(chǔ)上添加4個(gè)按鈕, 下圖所示:

代碼所示:

<Grid>
        <!-- 下面分別定義了2行 2列 -->
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
 
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
 
        <Button Grid.Column="0" Grid.Row="0">左上</Button>
        <Button Grid.Column="1" Grid.Row="0">右上</Button>
        <Button Grid.Column="0" Grid.Row="1">左下</Button>
        <Button Grid.Column="1" Grid.Row="1">右下</Button>
    </Grid>

注意:盡管一個(gè)單元格中, 允許放置多個(gè)元素, 通常來(lái)說(shuō)這沒(méi)有什么意義。如上所示, 每個(gè)元素都明確了對(duì)應(yīng)單元格中。

Grid與WarpPanel和StackPanel面板等容器不同得區(qū)別在于, Grid需要顯式定義行與列來(lái)放置元素。而相對(duì)于其他容器,則會(huì)隱式創(chuàng)建行與列。

調(diào)整行和列:

Grid面板支持3種設(shè)置尺寸的方式:

硬編碼尺寸 width="xxx" / height="xxx"
自動(dòng)設(shè)置尺寸 width="auto" / height="auto"
按比例設(shè)置尺寸 width="*" / height="2*"

例如, 下面的代碼演示了三種設(shè)置尺寸的方式:

<Grid>
       <!-- 下面分別定義了2行 2列 -->
       <Grid.RowDefinitions>
           <RowDefinition Height="Auto" />
           <RowDefinition Height="100"/>
       </Grid.RowDefinitions>
 
       <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*"/>
           <ColumnDefinition Width="2*"/>
       </Grid.ColumnDefinitions>
 
       <Button Grid.Column="0" Grid.Row="0">左上</Button>
       <Button Grid.Column="1" Grid.Row="0">右上</Button>
       <Button Grid.Column="0" Grid.Row="1">左下</Button>
       <Button Grid.Column="1" Grid.Row="1">右下</Button>
   </Grid>

實(shí)際的顯示效果可以看到, 第一列width="*" 為第二列的1/2, 第一行設(shè)置的自適應(yīng)高度, 而第二行則是硬編碼的高度 100

注意: 當(dāng)使用Grid進(jìn)行按比例設(shè)置列或者行時(shí), 如果Grid寬度為奇數(shù)像素, 那么被分割的行列像素帶小數(shù), 當(dāng)改列包含形狀元素、邊框、圖像, 那么顯示內(nèi)容可能是模糊的,

如果這個(gè)問(wèn)題影響布局, 則只需要將Grid的UseLayoutRounding屬性設(shè)置為True即可。

跨行與跨列:

處于Grid中的任意元素, 都具有兩個(gè)附加屬性, 分別為 RowSpan與 ColumnSpan。像這種跨行跨列在web應(yīng)用中十分常見(jiàn)。

下面的示例中演示了如何針對(duì)元素進(jìn)行跨列顯示:

5.UniformGrid面板

與Grid相反, UniformGrid并不遵循Grid的眾多原則, 無(wú)論是顯式聲明行和列, 還有其附加屬性。反而, 通過(guò)簡(jiǎn)單的設(shè)置

Rows和Columns屬性來(lái)設(shè)定其尺寸。每個(gè)單元格都被均勻分配, 關(guān)鍵一點(diǎn), 所有元素最后都根據(jù)其定義的先后順序放置在

單元格中。

示例代碼如下:

<UniformGrid Rows="2" Columns="2">
    <Button>button1</Button>
    <Button>button2</Button>
    <Button>button3</Button>
    <Button>button4</Button>
</UniformGrid>

6.Canvas面板

Canvas面板允許使用精準(zhǔn)的坐標(biāo)放置元素, 為了在Canvas面板中定位一個(gè)元素, 需要設(shè)置Canvas.Left 和 Canvas.Top屬性。

Code:通過(guò)設(shè)置元素的附加屬性 Canvas.Left 、Top、Right、Bottom 等進(jìn)行元素定位

<Canvas>
        <Button Canvas.Left="100" Canvas.Top="50">button1</Button>
        <Button Canvas.Left="100" Canvas.Top="80">button2</Button>
    </Canvas>

到此這篇關(guān)于WPF常見(jiàn)布局面板用法及介紹的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.NET下使用WScript.Shell執(zhí)行命令

    ASP.NET下使用WScript.Shell執(zhí)行命令

    ASP.NET下有自己的執(zhí)行CMD命令的方式,這里用WScript.Shell似有畫蛇添足之嫌,但是我們也不能排除真的有機(jī)器禁用了.NET的相關(guān)類,未雨綢繆嘛。當(dāng)然也不僅僅局限于WScript.Shell,只要是ASP中能用的組件,統(tǒng)統(tǒng)都可以用于ASP.NET中,而且還更方便!
    2008-05-05
  • ASP.NET MVC異步獲取和刷新ExtJS6 TreeStore

    ASP.NET MVC異步獲取和刷新ExtJS6 TreeStore

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC異步獲取和刷新ExtJS6 TreeStore的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用asp.net的pageDataSource中時(shí)索引問(wèn)題解決方法

    使用asp.net的pageDataSource中時(shí)索引問(wèn)題解決方法

    當(dāng)前頁(yè)面在數(shù)據(jù)的除第一頁(yè)的任何一個(gè)頁(yè)面時(shí),重新條件查詢并且是新條件的總頁(yè)數(shù)小于剛才查詢得到的頁(yè)碼時(shí),就會(huì)出現(xiàn)“索引 20 不是為負(fù)數(shù),就是大于行數(shù)”的類似的錯(cuò)誤
    2013-04-04
  • ASP.NET MVC生成靜態(tài)頁(yè)面的方法

    ASP.NET MVC生成靜態(tài)頁(yè)面的方法

    對(duì)于網(wǎng)站來(lái)說(shuō),生成純html靜態(tài)頁(yè)面除了有利于seo外,還可以減輕網(wǎng)站的負(fù)載能力和提高網(wǎng)站性能。本篇文章主要介紹了ASP.NET MVC生成靜態(tài)頁(yè)面的方法,有興趣的可以了解一下。
    2017-03-03
  • asp.net Repeater分頁(yè)實(shí)例(PageDataSource的使用)

    asp.net Repeater分頁(yè)實(shí)例(PageDataSource的使用)

    Asp.net提供了三個(gè)功能強(qiáng)大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分頁(yè)功能。相對(duì)DataGrid,DataList和Repeater控件具有更高的樣式自定義性,所以很多時(shí)候我們喜歡使用DataList或Repeater控件來(lái)顯示數(shù)據(jù)
    2013-04-04
  • 基于asp.net下使用jquery實(shí)現(xiàn)ajax的解決方法

    基于asp.net下使用jquery實(shí)現(xiàn)ajax的解決方法

    本文以最簡(jiǎn)單的方法為新手示范如何使用jquery實(shí)現(xiàn)ajax技術(shù)(所以本文是專為新手所寫,老鳥(niǎo)勿噴,大神此處省略一萬(wàn)字)。至于什么是jquery什么是ajax,自己谷歌去
    2013-05-05
  • .Net連接Oracle數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    .Net連接Oracle數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    本文使用System.Data.OracleClient方式,這是MS提供的以ADO.NET方式訪問(wèn)Oracel的驅(qū)動(dòng);Oracle也有個(gè)Oracle Data Provider for .NET(ODP.NET)下篇再討論。
    2009-02-02
  • IIS Express 取代 ASP.NET Development Server的配置方法

    IIS Express 取代 ASP.NET Development 

    這篇文章主要介紹了IIS Express 取代 ASP.NET Development Server的配置方法,需要的朋友可以參考下
    2023-06-06
  • .NET 白名單文件通過(guò)反序列化執(zhí)行系統(tǒng)命令的方法

    .NET 白名單文件通過(guò)反序列化執(zhí)行系統(tǒng)命令的方法

    本文介紹了如何利用微軟簽名的白名單文件VisualUiaVerifyNative.exe繞過(guò)安全防護(hù),詳細(xì)解析了其依賴庫(kù)、反序列化漏洞利用過(guò)程,并演示了實(shí)際操作步驟,感興趣的朋友一起看看吧
    2024-11-11
  • 通過(guò)HttpClient 調(diào)用ASP.NET Web API示例

    通過(guò)HttpClient 調(diào)用ASP.NET Web API示例

    本篇文章主要介紹了通過(guò)HttpClient 調(diào)用ASP.NET Web API示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論

瓦房店市| 江都市| 阿勒泰市| 纳雍县| 新民市| 黔江区| 盈江县| 会理县| 甘洛县| 宾阳县| 博兴县| 筠连县| 安乡县| 中牟县| 平顺县| 札达县| 水城县| 广宁县| 北海市| 洪雅县| 长春市| 安宁市| 海宁市| 延边| 临高县| 灌南县| 韩城市| 新蔡县| 安义县| 合阳县| 乌拉特中旗| 冷水江市| 抚顺县| 芒康县| 奉新县| 靖宇县| 罗定市| 中宁县| 通辽市| 苍山县| 固原市|