WPF中利用后台代码实现窗口分栏动态改变
在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter。
<Grid Background="#FFEDFFFB" Name="grid1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
但是每次改变窗口的大小,我们都要去拖动GridSplitter,这里为了偷懒,我们能不能直接某些按钮或选择框,来改变窗口的显示甚至隐藏。由于是改变每一栏的宽度,这里我们自然想到的是Grid.ColumnDefinitions的Width属性,他是GridLength类型参数,所以我们只要重新构造一个GridLength参数给Width就能够通过代码改变窗口大小。在http://technet.microsoft.com/zh-cn/library/system.windows.gridlength_members(v=vs.90).aspx这里,查看GridLength的构造函数,有两种方法,当然我们可以利用第一种方法GridLength(Double)直接给出每一栏的宽度,但是如果以后我们还想在窗口中拖动GridSplitter改变窗口大小就不再可能了。
所以,这里我用第二种构造函数GridLength(Double, GridUnitType),其中GridUnitType是一个枚举变量,有三个成员,相信大家看了其说明,也大概清楚每种变量的功能了。好了,下面看代码中如何改变窗口大小。

grid1.ColumnDefinitions[].Width = , GridUnitType.Star);
grid1.ColumnDefinitions[].Width = new GridLength(1.5, GridUnitType.Star);
grid1.ColumnDefinitions[].Width = new GridLength(1.5, GridUnitType.Star);
需要注意的是这里我们是改变的第0,2,4列的宽度,因为第1,3列是GridSplitter。这样我们不仅可以在界面上用鼠标拖动GridSplitter动态改变每一栏的大小,还能在代码中实现我们想要的效果。
WPF中利用后台代码实现窗口分栏动态改变的更多相关文章
- WPF中使用后台代码来控制TreeView的选择项(SelectedItem)以及展开节点操作
首先为TreeView控件制作一个Style: <Style x:Key="LibraryTreeViewItemStyle" TargetType="{x:Typ ...
- WPF中利用RadialGradient模拟放大镜效果
原文:WPF中利用RadialGradient模拟放大镜效果 --------------------------------------------------------------------- ...
- WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
原文:WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP11199 ...
- WPF中利用DynamicDataDisplay快速实现示波器功能
DynamicDataDisplay控件是一个功能很强的绘图工具,除了能生成曲线外,还有很多其他功能,具体见http://dynamicdatadisplay.codeplex.com/.这里你也能下 ...
- C# WPF 中WebBrowser拖动来移动窗口,改变窗口位置
前言 wpf中的WebBrowser相比之前的winform阉割了不少东西,也增加了不少东西,但是msdn对wpf也没有较好的文档 WebBrowser可以说是一个.NET控件,相对于WPF中的控件, ...
- 在ASP.NET中,后台代码向页面写HTML代码
Literal lt = new Literal();lt.Text = "<a href=\"http://www.czbin.cn\">czbin的博客& ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- jsp中利用java代码换行
从数据库中取出的10条商品数据分两行显示,每行5条. <% for(int i=0; i<latestProducts.size(); i++) { Product p = latestP ...
- python中利用少量代码快速实现从类对象中抽取所需属性的一种实践
项目中有可能会碰到这样一种场景: 根据一个id,查询得到和id对应的完整数据信息存储对象,比如书籍id到书籍详细信息,用户id到用户详细信息等,详细信息字段可能包括几十甚至上百个数据字段,真正需要返回 ...
随机推荐
- eclipse中自动生成javadoc文档
使用eclipse生成文档(javadoc)主要有三种方法: 1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步. 在 ...
- linux - 文本处理 及 正则表达式
先新建一个文件,并写入一些东西,方便测试, 从passwd里复制几行吧 $ /etc/passwd > passwd t$ ll 总用量 drwxrwxr-x huanghao huanghao ...
- CentOS(九)--与Linux文件和目录管理相关的一些重要命令①
接上一篇文章,实际生产过程中的目录管理一定要注意用户是root 还是其他用户. 一.目录与路径 1.相对路径与绝对路径 因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 & ...
- 关于JDK中的集合总结(三)
泛型: jdk1.5出现的安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. <>:什么时候用?当操作的引用数据类型不 ...
- poj 1201 差分约束
http://www.cnblogs.com/wangfang20/p/3196858.html 题意: 求集合Z中至少要包含多少个元素才能是每个区间[ai,bi]中的元素与Z中的元素重合个数为ci. ...
- Linux 命令 - watch: 反复执行命令,全屏显示输出
watch 命令周期性地执行命令,全屏显示输出.可以通过 watch 命令反复执行某一程序来监视它的输出变化. 命令格式 watch [-dhvt] [-n <seconds>] [--d ...
- CSS之边框属性
border-style 属性用于设置元素所有边框的样式,或者单独地为各边设置边框样式. border-style:dotted solid double dashed; border-style的属 ...
- 【SQL】关于存储过程调用过程中事务的点点滴滴
1.调用两个存储过程 ---------------------------------------------------------------- -- 表[dbo].[aaa_test]中[id ...
- Agile.Net 组件式开发平台 - 权限管理组件
RBAC原则 (1)最小权限原则之所以被RBAC所支持,是因为RBAC可以将其角色配置成其完成任务所需要的最小的权限集. (2)责任分离原则可以通过调用相互独立互斥的角色来共同 ...
- SecureCRT连接虚拟机中的Linux系统(Ubuntu)
最近在学习Linux,看了网上很多SecureCRT连接本地虚拟机当中的Linux系统,很多都是需要设置Linux的配置文件,有点繁琐,所以自己就摸索了一下,把相关操作贴出来分享一下. SecureC ...