1. 程式人生 > >WPF教程(二十五)WrapPanel

WPF教程(二十五)WrapPanel

WrapPanel用於一個接一個的排列子控制元件,以水平或者垂直方向,當空間不足時就會自動切換到下一行。適合於需要水平或者垂直排列控制元件且能自動換行的情況。

水平方向排列時,每一行所有子控制元件的高度都被統一成固定的值,這個值由最高的那個決定;每一列垂直方向排列時,所有子控制元件的寬度都被統一成固定的值,這個值由最寬的那個決定。

我們先來看預設情況下的WrapPanel:

<Window x:Class="WpfTutorialSamples.Panels.WrapPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WrapPanel" Height="300" Width="300">
        <WrapPanel>
                <Button>Test button 1</Button>
                <Button>Test button 2</Button>
                <Button>Test button 3</Button>
                <Button Height="40">Test button 4</Button>
                <Button>Test button 5</Button>
                <Button>Test button 6</Button>
        </WrapPanel>
</Window>
WrapPanel in Horizontal mode

注意我為第二行中的一個按鈕指定了一個高度,這就使得第二行所有按鈕都被設定成了這個高度。另外,這個面板還做了一件事件:第一行放不下的時候,自動了切換到第二行。

如果你改變視窗大小,譬如縮小視窗,面板立馬自動調整以適應新的尺寸:

WrapPanel in Horizontal mode

這些規則在垂直方向排列時也是一樣的。來看例子:

<Window x:Class="WpfTutorialSamples.Panels.WrapPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WrapPanel" Height="120" Width="300">
        <WrapPanel Orientation="Vertical">
                <Button>Test button 1</Button>
                <Button>Test button 2</Button>
                <Button>Test button 3</Button>
                <Button Width="140">Test button 4</Button>
                <Button>Test button 5</Button>
                <Button>Test button 6</Button>
        </WrapPanel>
</Window>
WrapPanel in Vertical mode
可以看到,垂直排列規則和水平方向的一模一樣。按鈕到達底部後就自動切換到第二列。我給第四個按鈕設定了較寬的寬度,所以第二列都變成了這個寬度。

特別要注意,水平向的WrapPanel自動匹配同一行的高度,而不會匹配寬度;垂直向的WrapPanel自動匹配同一列的寬度,而不會匹配高度。看下面的例子,垂直向的WrapPanel在第四個按鈕同時設定了寬和高:

<Button Width="140" Height="44">Test button 4</Button>
WrapPanel in Vertical mode with specific width/heights

可以看出第五個按鈕只使用了第四個按鈕的寬,並沒有使用高。於是第6個按鈕被擠到了第三列。

相關推薦

WPF教程WrapPanel

WrapPanel用於一個接一個的排列子控制元件,以水平或者垂直方向,當空間不足時就會自動切換到下一行。適合於需要水平或者垂直排列控制元件且能自動換行的情況。 水平方向排列時,每一行所有子控制元件的高度都被統一成固定的值,這個值由最高的那個決定;每一列垂直方向排列時,所有子

JavaFX UI控制元件教程之Color Picker

翻譯自  Color Picker 本章介紹ColorPicker控制元件,提供其設計概述,並說明如何在JavaFX應用程式中使用它。 JavaFX SDK中的顏色選擇器控制元件是一個典型的使用者介面元件,使使用者可以從可用範圍中選擇特定顏色,或通過指定RGB或HSB組合

WPF教程工具提示

工具提示有各種叫法,意思都是一樣的:在滑鼠停留在某一個控制元件或者某個連結上時,顯示其對應的額外資訊。WPF中通過使用FrameworkElement基類中的ToolTip屬性來實現,幾乎所有控制元件都繼承於此類。 為控制元件指定一個工具提示非常簡單,如下:<span

史上最簡單的 MySQL 教程「外來鍵」

外來鍵外來鍵:foreign key,外面的鍵,即不在自己表中的鍵。如果一張表中有一個非主鍵的欄位指向另外一張表的主鍵,那麼將該欄位稱之為外來鍵。每張表中,可以有多個外來鍵。新增外來鍵外來鍵既可以在建立表的時候增加,也可以在建立表之後增加(但是要考慮資料的問題)。第 1 種:在建立表的時候,增加外來鍵基本語法

WPF教程使用DataContext

DataContext屬性是繫結的預設源,除非你具體指定了另外一個源,就像上一章裡面我們使用了ElementName屬性。它由FrameworkElement類定義,大部分UI控制元件包括WPF視窗都繼承於此類。簡單地說,它允許你指定一個繫結的基。 DateContext並

【D3.js資料視覺化系列教程--載入csv檔案

csv檔案由csv資料生成的圓環!  1. 載入csv資料用到d3.csv函式,第一個引數是地址,第二個引數是個回撥函式d3.csv("http://localhost:8080/spring/D3da

WPF教程密碼框

WPF中編輯常規的文字都是使用文字框,但是如果是輸入密碼呢?功能應該是一樣的,但是我們不想周邊的人看著我們一個字母一個字母的輸入,這樣密碼就被洩漏了,因此我們想用別的字元來替代真實密碼的顯示。出於這個目的,WPF有一個密碼框控制元件,用起來和文字框一樣。 <span

【轉】JMeter學習HTTP屬性管理器HTTP Cookie Manager、HTTP Request Defaults

agen 讀取 expired fault 範圍 運行時 ear 定制 只有一個 Test Plan的配置元件中有一些和HTTP屬性相關的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager

2016集訓測試賽小結

時間 第一題 是我 很多 分析 題目 ... 人的 簡單   這場測試賽有必要小結一下.   昨晚 1 點才睡, 今天狀態很差, 先睡了 1 個小時, 然後開始打比賽. 第一題不大會做, 寫了一個代碼後發現是錯的, 第二題看不懂題, 第三題簡單地分析了一下, 發現是一個樹形

C#編程----------接口

目的 count() 聲明變量 form [] 類的繼承 計算機 構造 執行 接口 如果一個類派生自一個接口,聲明這個類就會實現某些函數.並不是所有的面向對象的語言都支持接口. 例如,有一個接口:IDispoable,包含一個方法Dispose(),該方法又類實現,用於清理

企業分布式微服務雲SpringCloud SpringBoot mybatis 集成swagger2構建Restful API

sel ima eth syn conf ring 但是 batis 關註 一、引入依賴 <dependency> <groupId>io.springfox</groupId> <

Spring Boot教程使用MongoDB數據庫1

frame 既然 artifact html ace 數據庫 支持 高度 官網 MongoDB簡介 MongoDB是一個基於分布式文件存儲的數據庫,它是一個介於關系數據庫和非關系數據庫之間的產品,其主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS系統

Linux學習筆記shell特殊符號、 sort_wc_uniq、tee_tr_split

tee_tr_split命令一、特殊字符 1.‘* ‘任意個任意字符‘? ‘任意一個字符‘# ‘註釋字符‘ \ ‘脫義字符‘ | ‘管道符其中大部分之前都用過,對於脫義符‘\‘脫義符用法舉例如圖 2.幾個與管道有關的命令cut 分割,-d 分隔符 -f 指定段號 -c 指定第幾個字符 sort 排序,

Linux 學習總結 系統管理4

iptables filter nat netfilter iptables 應用實例 一 filter表案例 1 需求:只針對filter表,預設INPUT 鏈DROP ,其他兩個鏈ACCEPT,然後針對192.169.188.0/24開通22端口,對所有網段開放80端口,21端口。我們編寫sh

大數據筆記——Scala函數式編程

=== 情況 不能 nbsp 結構 map som class 編程 ===================== Scala函數式編程 ======================== 一、Scala中的函數 (*) 函數是Scala中的頭等公民,就和數字一樣,可以在變量中

C之數組

C語言 數組 在 C 語言中,我們不可避免的要接觸到數組。我們就來看看數組是什麽玩意,其實數組就是相同類型的變量的有序集合。下面這張圖更加形象的表示出數組的含義 數組在一片連續的內存空間中存儲元素,數組元素的個數是可以顯示或隱式指定的。比如: int a[5] = {1,

python2.7練習小例子

點贊 實例 net mil 感覺 format 經典題目 tty 遞推 25):題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說

完善的復數類

C++ 復數類 賦值操作符 操作符重載 我們在之前已經是實現了復數類的相加操作,那麽我們今天就來完善下復數類。一個完整的復數類應該具備的操作有:運算(+, -, *, /);比較(==, !=);賦值(=);求模(modulus);利用的就是操作符重載來統一實現復數與實數的運算

類的加載

main函數 img emp ima info 技術 admin file bubuko jvm先找main函數,加載Demo34類 加載Car類,實例化對象進堆,成員變量都在堆中執行。類中的函數依舊在占中運行,遵循先入後出的原則,執行結束立即撤

Kafka:ZK+Kafka+Spark Streaming集群環境搭建Structured Streaming:同一個topic中包含一組數據的多個部分,按照key它們拼接為一條記錄以及遇到的問題

eas array 記錄 splay span ack timestamp b- each 需求: 目前kafka的topic上有一批數據,這些數據被分配到9個不同的partition中(就是發布時key:{m1,m2,m3,m4...m9},value:{records