WPF 中的 GridSplitter 详解

embedded/2025/3/25 15:19:38/

1. 什么是 GridSplitter?

GridSplitter 是 WPF 提供的一个控件,用于调整 Grid 布局的行或列的大小。它可以让用户在运行时拖动分隔线,以改变相邻的行或列的大小,而不需要修改 XAML 代码。


2. GridSplitter 的基本用法

(1)水平分割(调整行高度)

如果希望 GridSplitter水平方向 调整行的大小,必须将其放在一行,并确保该行的 Height 设为 Auto,这样 GridSplitter 才能自由调整。

解释:

  • GridSplitter 放在 第二行Grid.Row="1")。

  • Height="5" 设定分割线的厚度。

  • HorizontalAlignment="Stretch"GridSplitter 占满网格的宽度。


(2)垂直分割(调整列宽度)

如果希望 GridSplitter垂直方向 调整列的大小,必须将其放在一列,并确保该列的 Width 设为 Auto

解释:

  • GridSplitter 放在 第二列Grid.Column="1")。

  • Width="5" 设定分割线的厚度。

  • VerticalAlignment="Stretch"GridSplitter 占满网格的高度。


3. GridSplitter 的属性

(1)主要属性

属性说明
Width / Height控制 GridSplitter 的厚度(水平或垂直)。
Background设定 GridSplitter 的背景颜色,方便用户看到。
HorizontalAlignment适用于 水平 GridSplitter,通常设为 Stretch
VerticalAlignment适用于 垂直 GridSplitter,通常设为 Stretch
ResizeDirection控制调整 还是 ,默认为 Auto
ResizeBehavior控制如何调整大小,如 PreviousAndNext(默认)、PreviousNext
DragIncrement设置拖动时的最小步长,默认值为 1,单位是像素。

(2)ResizeDirection(调整方向)

选项说明
Auto(默认)自动检测 GridSplitter 的方向(垂直或水平)。
Columns只调整 列宽(适用于垂直 GridSplitter)。
Rows只调整 行高(适用于水平 GridSplitter)。

示例:

(3)ResizeBehavior(调整行为)

选项说明
PreviousAndNext(默认)调整 GridSplitter 前后 两侧的行或列。
Previous只调整 GridSplitter 前一行/列 的大小。
Next只调整 GridSplitter 后一行/列 的大小。

示例:


4. 进阶使用:结合 MinHeight / MinWidth

在调整大小时,可以限制最小高度或最小宽度,防止拖动过度导致 UI 变形。


5. 总结

功能方法
调整行高GridSplitter 放在 RowDefinition Height="Auto" 行内,Height="5"HorizontalAlignment="Stretch"
调整列宽GridSplitter 放在 ColumnDefinition Width="Auto" 列内,Width="5"VerticalAlignment="Stretch"
限制拖动范围设定 MinHeight / MinWidth 防止过度拖动。
控制调整方式使用 ResizeDirectionRows/Columns)和 ResizeBehaviorPreviousAndNext)。
设置拖动步长DragIncrement="10" 控制拖动时最小步长,提高调整体验。

GridSplitter 是 WPF 进行 动态 UI 布局 的重要工具,正确使用可以提升用户体验,使界面更加灵活。


http://www.ppmy.cn/embedded/174584.html

相关文章

maven使用install将jar包编译到本地仓库管理

要install的jar包 mvn install:install-file -DgroupIdcn.qiufeng -DartifactIdDJGenHsmAPI -Dversion3.1.0d -Dpackagingjar -DfileDJGenHsmAPI-3.1.0d.jar 重点是版本号必须使用编译后的版本号 发布成功后

gitlab将本地项目提交到远程dev分支

获取Git路径 首先从远程获取到git路径,将给的git地址进行克隆到本地文件; git clone http:************.git 按照git地址的文件路径将本地项目,拷贝到目标文件中 在该路径中,初始化命令; # 初始化项目 git init #…

MySQL:8.0- timestamp默认值允许‘0000-00-00 00:00:00‘

MySql 8.0中输入代码: alter table kingbal_com add column create_date timestamp not null default 0000-00-00 00:00:00; 报错,提示默认时期格式0000-00-00 00:00:00有误。 解决办法: 1) select sql_mode; -- 查看全局sql…

Android第四次面试(Java基础篇)

一、Java 中的 DCL 单例模式 单例模式是设计模式中最常用的模式之一,其核心目标是确保一个类在程序中仅有一个实例,并提供全局访问点。在 Java 中,实现单例模式需要兼顾线程安全和性能优化。DCL(Double-Checked Locking&#xff0…

2025年智能系统、自动化与控制国际学术会议(ISAC 2025)

重要信息 2025 International Conference on Intelligent Systems, Automation and Control 2025年3月28-30日 | 中国西安理工大学 | 会议官网: www.icisac.org 简介 在国家大力推动高质量发展与创新驱动战略的背景下,智能制造与自动化控制行业正迎…

Microchip AN1477中关于LLC数字补偿器的疑问

最近在学习Microchip的AN1477关于LLC的功率级传递函数推导及数字补偿器设计,对其中的2P2Z数字补偿器的系数有一些困惑。我在MATLAB中运行了源程序提供的VMC_LLC.m文件,发现有些地方和AN1477中的结果不一致。现在把相关有疑问的地方列举出来,也…

【Linux】Makefile秘籍

> 🍃 本系列为Linux的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:【小编的个人主页】 >小编将在这里分享学习Linux的心路历程✨和知识分享🔍 >如果本篇文章有问题,还请多多包涵&a…

git bundle创建和复制分支的方法

git bundle 是一个非常实用的 Git 工具,它允许你将一个 Git 仓库的提交历史打包成一个单独的文件,方便在没有网络连接或者不方便直接克隆仓库的情况下传输和分享代码。以下是 git bundle 常见使用场景及对应的实例。 1. 创建包含单个分支所有提交的 bun…