博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF之路五:wpf 隐藏与显示 Visibility
阅读量:5254 次
发布时间:2019-06-14

本文共 769 字,大约阅读时间需要 2 分钟。

WPF里枚举变量Visibility 有三个值:Visible, Collapsed和Hidden。其中Collapsed是WPF新引进的,其作用是不仅隐去Control,同时也会移除Control所占据的空间。这个属性在你需要隐藏某个控件的同时又让界面看起来统一齐整时非常有效。

 

一般来说,使用Hidden和Collapsed隐藏控件都是可行的。但是在实际的开发过程中,我发现两者还是有不少区别的,尤其在某些特定的环境里。如果使用过程中不注意,可能会造成不可预见的后果。

 

我开发过一个程序,主界面的Xaml布局大概如下:

 

在后台代码中,A和B会相互切换,隐去A显示B或显示B隐去A。如果隐去的时候设置的枚举值是Collapsed,我发现在切换的过程中,A或B的界面显示会有问题,具体表现为其长度超出了原先设想的限制范围。跟踪的时候发现Windows的重载函数MeasureOverride和ArrangeOverride被调用,而且其参数就已经有问题了。分析认为,如果一个控件被设置成Collapsed,重新显示的时候,Render Engine就会重新计算A或B里控件的位置和大小,造成不可预知的结果。如果设成Hidden,因为控件所占的位置没有被移除,重新显示的时候就不需要计算这些数值,也就可以避免以上不良后果。

 

另外一个问题涉及到508(高亮对比,针对色盲人士)。如果控件设置成了Collapsed,多次设置高对比度后,该控件没法正常显示,其位置为黑色,重启程序方能解决。设置成hidden就不会有这个问题。

 

本文来自

http://blog.csdn.net/qian_xu/article/details/6191900

转载于:https://www.cnblogs.com/blindman/p/3803634.html

你可能感兴趣的文章
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
jQuery插件开发详细教程
查看>>
Crontab 在linux中的非常有用的Schedule Jobs
查看>>
ProxySQL Scheduler
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
用CALayer实现下载进度条控件
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>