【C#/WPF】GridSplitter 分割布局,拖拽控件分隔栏以改变控件尺寸
来源:互联网 发布:u盘安装ubuntu进入不了 编辑:程序博客网 时间:2024/06/06 00:23
需求:界面由多部分控件组成,想要拖拽控件之间的分隔栏以改变尺寸。
MainWindow.xaml:
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="300"/> <ColumnDefinition Width="300"/> </Grid.ColumnDefinitions> <ListBox Grid.Row="0" Grid.Column="0"> <ListBoxItem>aaaa</ListBoxItem> <ListBoxItem>bbbb</ListBoxItem> <ListBoxItem>cccb</ListBoxItem> </ListBox> <TextBlock Grid.Row="0" Grid.Column="1">sadfas</TextBlock> <GridSplitter Grid.Row="0" Grid.Column="0" Width="0" VerticalAlignment="Stretch" HorizontalAlignment="Right"/></Grid>
运行效果如下:
红色虚线表示了拖动分隔栏以改变控件的尺寸边缘。
坑点:
- 必须使用Grid及其行和列来定义,否则能显示但无法拖动。例如下面的写法是无效的:
<StackPanel Orientation="Horizontal"> <TextBlock Text="LLLLLLLLLLLLLL"/> <GridSplitter Width="10" HorizontalAlignment="Center" VerticalAlignment="Stretch" Background="Wheat"/> <TextBlock Text="RRRRRRRRRRRRRR"/></StackPanel>
- 对于左右分割列,必须指定分隔栏GridSplitter的宽度Width,以及设置VerticalAlignment,否则无效。
- 对于上下分割行,必须指定分隔栏GridSplitter的高度Height,以及设置HorizontalAlignment,否则无效。
再来一个详细一点的例子:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApplication1" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid" mc:Ignorable="d" Title="MainWindow" Height="600" Width="1000"> <Grid> <Grid.RowDefinitions/> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="10"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="LLLLLLLLLLLLLL"/> <GridSplitter Grid.Row="0" Grid.Column="1" Width="10" HorizontalAlignment="Center" VerticalAlignment="Stretch" Background="Wheat"/> <Grid Grid.Row="0" Grid.Column="2"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="10"/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="RRRRRRTTTTTTTT"/> <GridSplitter Grid.Row="1" Grid.Column="0" Height="10" HorizontalAlignment="Stretch" Background="Wheat"/> <TextBlock Grid.Row="2" Grid.Column="0" Text="RRRRRRBBBBBBBB"/> </Grid> </Grid></Window>
运行效果如图:下面的水平和垂直的黄色分隔栏都是可以拖动的。
重要的参考:
关于使用的类 GridSplitter
如何左右分割列:https://msdn.microsoft.com/en-us/library/ms745672(v=vs.110).aspx
如何上下分割行:https://msdn.microsoft.com/en-us/library/ms743457(v=vs.110).aspx
0 0
- 【C#/WPF】GridSplitter 分割布局,拖拽控件分隔栏以改变控件尺寸
- 【C#/WPF】限制GridSplitter分隔栏的滑动范围
- WPF中GridSplitter控件的使用
- 用Grid和GridSplitter布局和分割WPF窗口
- WPF-GRID分割多窗口 用Grid和GridSplitter布局和分割WPF窗口
- WPF 改变控件位置
- WPF中的控件布局
- WPF中的控件布局
- WPF之布局控件
- WPF 控件与布局
- WPF 控件与布局
- 控件尺寸跟随窗口尺寸改变
- WPF教程(三十二)GridSplitter分割线
- WPF中控件绑定XML文件,实现修改XML文件即可以改变程序控件内容
- [WPF] 使用Grid与GridSplitter排版布局
- WPF布局控件简单介绍
- WPF 布局控件 之 Canvas
- WPF 布局控件 之 WrapPanel
- PHP 实现获取服务器端IP地址
- Linux 删除文件夹和文件的命令
- MySQL常用命令总结(1)
- Python 中的列表排序函数
- PL/SQL 的包
- 【C#/WPF】GridSplitter 分割布局,拖拽控件分隔栏以改变控件尺寸
- mysql处理海量数据时的一些优化查询速度方法
- linux c void 类型应用
- 彻底解决,dialog点击外部消失,键盘没有消失的问题
- 这是我第一篇文章 我会努力做好的
- 关于easy可编辑表格树表格刷新和加载状态问题
- C#学习日记 2017-02-24 Datatable 类 问题汇总
- 值得推荐的C/C++框架和库 (真的很强大)
- 工作流学习——Activiti流程定义管理三步曲