WPF 布局心得 一个像素引发的问题和思考

原创 2016年11月08日 10:29:52

用xaml布局界面的时候,遇到了这样一个问题。
按钮的白色border边框一边细一边消失了。

按钮的白色border边框一边细一边消失了

正常的情况应该是这样的。

这里写图片描述

我大致的思路是这样的,可能是外部原因:容纳按钮的容器把按钮的边框挤没了。还有一种可能是内部原因:按钮的样式写的有问题,因为按钮的样式是自定义的,自定义的时候容易更改一些细节的地方,但自己察觉不出来。

试着更改了按钮外的容器,发现没有效果。于是把注意力转移到寻找内部原因上来。在ControlTemplate中找到了这一处。

这里写图片描述

ControlTemplate是这样写的:最外层是一个Grid,接下来是Border,接下来是Grid,Grid中有ContentPresonter。问题在于border中有一个margin =”1,1,2,1”,这个会让Border在Grid中平移一下。正常状况下,没有人会让Grid和Border之间有一个margin。从图中有几个问题,为什么水平方向的border变细了,竖直方向的border没有变化。

布局中有数字的尺寸的优先级是最高的,他也有一个尽可能适应布局要求的期望,所以哪有空间就往哪挤。我显示设置了按钮的宽度,没有显示设置按钮的高度,按钮的宽度一旦设定,Grid的宽度就会不变,Grid里的Border的宽度不会变,然后我改变margin的值margin =”1,1,1,1”,Grid和Border既要保证原来的宽度不变又要体现出来margin设置的变化(设置margin意味着border的宽高要变小)。既要我不变又要我变小,我只能减小我的小白边啦。于是,两边白边减小一个像素,border的宽减小两个像素。

这里写图片描述

这里我猜想,Grid的Width = “TemplateBinding”优先级高于Border的Width = “TemplateBinding”
ControlTemplate内部设置的优先级高于外部引用控件设置属性的优先级。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串  find .|xargs grep -ri "IBM"  查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名  find .|xargs g...

Radon变换入门matlab CT原理

http://hi.baidu.com/hi9394/blog/item/0d492b8bfd714700c8fc7aa9.html 简介 图像投影,就是说将图像在某一方向上做线性积分(或理解为累...

Excel2016右键新建工作表,打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。”的解决办法

上午新建excel工作表时,发现新建完之后居然打不开 提示: 尼玛这坑爹的,难道我的Excel坏了?? 排查问题之后发现 只有新建“Microsoft Excel 工作表”时...

js弹出框、对话框、提示框、弹窗总结

js弹出框、对话框、提示框、弹窗总结 一、JS的三种最常见的对话框 [javascript] view plaincopy //=...

Intel系列处理器的三种工作模式

Intel系列处理器的三种工作模式 微机中常用的Intel系列微处理器的主要发展过程是:8080,8086/8088,80186, 80286,80386,80486,Pentium,Pen...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF 布局心得 一个像素引发的问题和思考
举报原因:
原因补充:

(最多只允许输入30个字)