1.GridSplitter的ShowsPreview设置为True时拖动报null错误

解决方法在Grid外面包装一个装饰器:AdornerDecorator,至于为什么这么做,暂时还不知道

2.当ShowsPreview设置为True时,可以设置鼠标拖动的时候动态效果,具体方法是设置PreviewStyle

另外这个PreviewStyle的TargetType只针对Control的,因为在GridSplitter类定义上有StyleTypedPropertyAttribute

 <GridSplitter Grid.Row="" Height=""
VerticalAlignment="Bottom"
ShowsPreview="True"
HorizontalAlignment="Stretch"
Background="Transparent">
<GridSplitter.PreviewStyle>
<Style TargetType="Control">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Control">
<Rectangle Height="" Fill="#808080"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GridSplitter.PreviewStyle>
</GridSplitter>

3.有时拖动的时候会出现鼠标拖动超出了边界的效果,出现这个的问题是由于没有设置Grid的行或者列的最大最小值,当设置好这个最大最小值后就没有问题了:

 <Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight=""></RowDefinition>
<RowDefinition Height="" MinHeight="" MaxHeight=""></RowDefinition>
</Grid.RowDefinitions>

另外需要注意:在设置时最好是第一行的最小值+第二行的最大值小于总的高度,这样在拖动的时候边界的效果是最好的

假如Grid的高度是500,第一行的最小高度是150,那么第二行的最大高度就设置为<=350

4.如何设置GridSplitter时左右拖动还是上下拖动,可以设置ResizeBehavior属性

ResizeBehavior属性默认是GridResizeBehavior.BasedOnAlignment。这个枚举值,简而言之:如果HorizontalAlignment或VerticalAlignment是Center或者Stretch的话,GridSplitter的移动会改变相邻两个区域块(这里的相邻,如果GridSplitter是横向的话,是指上下两个区域。如果GridSplitter是纵向的话,是指左右两块区域,其中VerticalAlignment控制纵向,HorizontalAlignment控制横向)。如果是HorizontalAlignment或VerticalAlignment的其他值,则GridSplitter的移动会改变当前区域和相邻的一个区域的大小。具体相邻的哪个区域,跟Alignment值对应。

当然GridResizeBehavior的其他值:CurrentAndNext,PreviousAndCurrent,PreviousAndNext。可以直接控制需要改变大小的两个区域。

不过在一般情况下,我们只需要保留ResizeBehavior的默认值,并设置GridSplitter的对其为Stretch或Center就可以完成普通需求了。或者将相邻区域块的大小设置为GridLength.Auto。

注意FrameworkElement的HorizontalAlignment和VerticalAlignment默认是Stretch,但是GridSplitter的HorizontalAlignment被改写为Right。

文章参考:https://www.mgenware.com/blog/?p=45

GridSplitter用法的更多相关文章

  1. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  4. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  5. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  6. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

随机推荐

  1. 多通道(比方RGB三通道)卷积过程

    今天一个同学问 卷积过程好像是对 一个通道的图像进行卷积, 比方10个卷积核,得到10个feature map, 那么输入图像为RGB三个通道呢,输出就为 30个feature map 吗, 答案肯定 ...

  2. 九度OJ 1006:ZOJ问题 (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:18621 解决:3197 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下: 1. ...

  3. 九度OJ 1029:魔咒词典 (排序)

    时间限制:5 秒 内存限制:32 兆 特殊判题:否 提交:4574 解决:1318 题目描述:     哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部 ...

  4. 九度OJ 1018:统计同成绩学生人数 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8807 解决:4651 题目描述: 读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入: 测试输入包含若干测试用例,每个测试用例的 ...

  5. 【题解】AT2043 AND Grid

    [题解]AT2043 AND Grid 我们考虑直接构造两个互补的图切分别联通的图,然后原图有的大家都有就构造完成了. #include<iostream> #include<cst ...

  6. nodejs 版本dockerfile 文件制作,和常用命令

    Dockerfile 如下 官方的node6.3的版本有点难下载,建议去网易蜂巢  https://c.163.com/hub pull hub.c.163.com/library/node:6.9 ...

  7. JavaScript toFixed() 方法注意点

    定义和用法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 语法 NumberObject.toFixed(num) 参数 描述 num 必需.规定小数的位数,是 0 ~ ...

  8. update module (更新模块)

    [转自http://blog.csdn.net/zhongguomao/article/details/6712568] function module:更新程序必须用一个特殊的FM(update m ...

  9. c# &与&& 和 |与||的区别(转载)

    &:按位与,对两个条件都进行判断&&:逻辑与,只要一个条件满足,另外一个条件就不会执行 同理:|:按位或,对两个条件都进行判断||:逻辑或,只要一个条件满足,另外一个条件就不会 ...

  10. matlab之text()函数

    text()函数用来给图加上说明性文字. 格式:text(x,y,'txt') 或者:text(x,y,'txt','color','k') x,y是位置 txt是说明文字,如果说明性文字是数字,则这 ...