1. 程式人生 > >WPF教程(三十二)GridSplitter分割線

WPF教程(三十二)GridSplitter分割線

在前面的章節你已經學到,使用Grid面板可以很容易的將可用空間劃分成單個單元格。使用行和列的定義,又很容易控制每行或每列佔據多少空間。但是,如果你想讓使用者來改變這些該怎麼辦呢?這個時候GridSplitter就出場了。

GridSplitter使用起來非常簡單,把它加到Grid裡的某一行或者某一列,再分配合適的空間如5個畫素這樣就可以了。它允許使用者從左邊到右邊,從上到下進行拖拽,這樣就改變了行或列的尺寸。來看例子:

<Window x:Class="WpfTutorialSamples.Panels.GridSplitterSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="GridSplitterSample" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Left side</TextBlock>
        <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />
        <TextBlock Grid.Column="2" FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Right side</TextBlock>
    </Grid>
</Window>
A Grid panel with a GridSplitter control
A Grid panel with a GridSplitter control in action

從上面可以看到,我建立了一個Grid,裡面包含了兩個等寬的列,以及中間5個畫素的列。兩邊都放了一個TextBlock控制元件來例證這個問題。截圖中就能看到,GridSplitter猶如一條分割線,把兩邊的列隔開了。一旦滑鼠劃到上面,就會改變形狀,告訴你可以改變尺寸。

水平的GridSplitter

GridSplitter使用非常簡單,當然也支援水平方向的分割。實際上,和垂直分割相比,你幾乎不用做什麼改變就能實現水平分割,就如下面的例子演示的:

<Window x:Class="WpfTutorialSamples.Panels.GridSplitterHorizontalSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="GridSplitterHorizontalSample" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="5" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <TextBlock FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Top</TextBlock>
        <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" />
        <TextBlock Grid.Row="2" FontSize="55" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap">Bottom</TextBlock>
    </Grid>
</Window>
A horizontal Grid panel with a GridSplitter control in action
上面,我只是把列改成了行,然後在GridSplitter裡面把列寬改成了行高。GridSplitter自動調整剩餘的工作,但為了保險起見,你也可以使用ResizeDirection屬性來強制規定行模式或者列模式。

相關推薦

WPF教程GridSplitter割線

在前面的章節你已經學到,使用Grid面板可以很容易的將可用空間劃分成單個單元格。使用行和列的定義,又很容易控制每行或每列佔據多少空間。但是,如果你想讓使用者來改變這些該怎麼辦呢?這個時候GridSplitter就出場了。 GridSplitter使用起來非常簡單,把它加到G

WPF教程使用DataContext

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

聊聊高並發實現一個基於鏈表的無鎖Set集合

target 方向 刪除 元素 min 集合 date 變量 find Set表示一種沒有反復元素的集合類,在JDK裏面有HashSet的實現,底層是基於HashMap來實現的。這裏實現一個簡化版本號的Set,有下面約束: 1. 基於鏈表實現。鏈表節點依照對象的h

訂單管理-查詢訂單詳情

pos 查詢 oid item res ima 不用 close pro 查詢訂單詳情 點擊每一個訂單後面的訂單詳情,將該訂單的oid通過ajax傳遞到後臺查詢 步驟分析: 給按鈕添加事件 /store/WebCon

Linux學習screen

oot mst tail pre linux article col install vmstat screen概述 我們可以將screen看成一個子窗口,我們可以通過命令將這個子窗口放入後臺運行而不關閉它。當我們有需要時,我們還可以將它調出來。 screen使用 安裝

企業布式微服務雲SpringCloud SpringBoot mybatis spring boot做調度任務

tro 一次 tis com href 什麽 init boot 2.6 構建工程 創建一個Springboot工程,在它的程序入口加上@EnableScheduling,開啟調度任務。 @SpringBootApplication @EnableScheduling p

Spring Boot教程使用Redis數據庫2

分享圖片 target object docs int cpp eas 序列 lean 除了String類型,實戰中我們還經常會在Redis中存儲對象,這時候我們就會想是否可以使用類似RedisTemplate<String, User>來初始化並進行操作。但是

Spring Boot教程使用MongoDB數據庫1

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

Linux學習筆記iptables filter表案例、 iptables nat表應用

iptables filter表案例、 iptables nat表應用 一、iptables filter表案例需求:將80、20、21端口放行,對22端口指定特定的ip才放行以下為操作方法:vim /usr/local/sbin/iptables.sh //加入如下內容#! /bin/bas

JmeterJmeter Question 之 亂碼解讀

直接 默認 進行 json 字符 blog 文件中 內容 錄制完成   眾所周知,編碼的問題影響著眾多開發者,當然見多不怪。   先扒了一個編碼的原因,也就是為什麽要編碼: 計算機中存儲信息的最小單元是一個字節即 8 個 bit,所以能表示的字符範圍是 0~255 個 人

Linux學習總結lamp之php安裝

php libphp5.so lamp PHP官網www.php.net當前主流版本為5.6/7.1 cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6.30.tar.gz tar zxf php-5.6.30.tar

邏輯操作符的陷阱

C++ 重載邏輯操作符 邏輯操作符陷阱 比較操作符 我們今天來看看邏輯操作符,它的原生語義是:操作數只有兩種值(true 和 false),邏輯表達式不用完全計算就能確定最終值,其最終結果只能是 true 或者 false。 下來我們來看個編程實驗#include

Spark2.2+ES6.4.2:ES API之ndex的create建立index時設定setting,並建立index後根據avro模板動態設定index的mapping/update/delete/open/close

要想通過ES API對es的操作,必須獲取到TransportClient物件,讓後根據TransportClient獲取到IndicesAdminClient物件後,方可以根據IndicesAdminClient物件提供的方法對ES的index進行操作:create index,update inde

Spark2.2+ES6.4.2:ES API之ndex的create創建index時設置setting,並創建index後根據avro模板動態設置index的mapping/update/delete/open/close

pre hdfs -- 行操作 模板 del class max pen 要想通過ES API對es的操作,必須獲取到TransportClient對象,讓後根據TransportClient獲取到IndicesAdminClient對象後,方可以根據IndicesAd

樂優商城——購物車

目錄 一、搭建購物車微服務 1.1 建立module 1.2 pom依賴 1.3 配置檔案 1.4 啟動類 二、購物車功能分析 2.1 需求 2.2 流程圖 三、未登入購物車 3.1 準備 3.1.1 購物車的資料結構 3.1.2 web本地儲存

ElasticSearch最佳入門實踐bulk api的奇特json格式與底層效能優化關係揭祕

1、bulk api奇特的json格式 {"action": {"meta"}}\n {"data"}\n {"action": {"meta"}}\n {"data"}\n 2、bulk中的每個操作都可能要轉發到不同的node的shard去執行 3、如果採用比較良好的js

歸併排序和快速排序

        上節我們學習了氣泡排序和希爾排序,本節我們繼續學習歸併排序和快速排序。         1、歸並排序:將兩個或兩個以上的有序序列

Java程式設計師從笨鳥到菜鳥之大話設計模式設計模式分類和種工廠模式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python之路:DjangoModel補充 Django之Model進階的更多操作 Django之Model進階的更多操作

Django之Model進階的更多操作   一、欄位 AutoField(Field) - int自增列,必須填入引數 primary_key=True BigAutoField(

演算法題:判斷叉樹是否是平衡叉樹

7. 判斷是否是BST 題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 分析 可以用遞迴的方法,從下向上遍歷各個結點(後序遍歷),如果結點是滿足BST的條件則返回該結點的高度,如果不滿足則直接停止遍歷並返回false。 程式碼 public cl