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>
從上面可以看到,我建立了一個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>
上面,我只是把列改成了行,然後在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
Jmeter(三十二)Jmeter 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