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

WPF之路五:wpf 隐藏与显示 Visibility相关推荐

  1. [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口

    原文:[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 周银辉 现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我 ...

  2. WPF Prism(五)Navigation

    WPF Prsim(一)Region WPF Prism(二)Module WPF Prism(三)ViewModelLocator WPF Prism(四)MVVM WPF Prism(五)Navi ...

  3. 【C#】WPF和winform窗体贴边隐藏(类似QQ)

    [WPF]实现窗体贴边隐藏 1.新建WPF项目Test,主窗体MainWindow.xaml,在后台MainWindow.xaml.cs填写下面的代码.主窗体调用Hide类,实现隐藏功能. //有些引 ...

  4. WPF程序在Win7系统下字体显示异常(解决方法记录)

    WPF程序在Win7系统下字体显示异常(解决方法记录) 问题描述 WPF程序在大部分客户电脑上正常运行,字体显示正常.仅在某个客户电脑上显示异常.并且不是所有字体都显示为异常状况.指定了具体字体的(如 ...

  5. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...

  6. 【WPF】如何使用wpf实现屏幕最前端的绘图?

    [WPF]如何使用wpf实现屏幕最前端的绘图? 原文:[WPF]如何使用wpf实现屏幕最前端的绘图? 引言 在知乎上面看到如何使用wpf实现屏幕最前端的绘图? 这么一个问题,觉得全屏弹幕很有趣,所以把 ...

  7. WPF笔记(1.1 WPF基础)——Hello,WPF!

    WPF笔记(1.1 WPF基础)--Hello,WPF! 原文:WPF笔记(1.1 WPF基础)--Hello,WPF! Example 1-1. Minimal C# WPF application ...

  8. 第一章:初识WPF,XAML,WPF控件

    前言 总目录 本章主要介绍WPF与XAML,以及WPF的控件的基本使用,让大家先初步认识WPF. 关于WPF的官方资料:官方WPF文档1 .官方WPF文档2.官方WPF文档3.官方WPF文档4 一.W ...

  9. [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)

    [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu) 原文 [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu) [WPF疑难]如何禁用WPF窗口的系统菜单(SystemM ...

最新文章

  1. 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介
  2. 对话文津|相约“信息”的前世今生
  3. 图书管理系统python代码课程设计报告_数据结构图书管理系统课程设计报告
  4. 【Python】Pandas基础:结构化数据处理
  5. ML之Clustering之H-clustering:Hierarchical clustering算法相关论文、主要思路、关键步骤、代码实现等相关配图之详细攻略
  6. 手机进水的正确处理方法?
  7. 无ldf文件情况下恢复数据库数据纪实
  8. C# 串口接收1次数据会进入2次串口接收事件serialPort1_DataReceived,第2次进入时串口缓冲区为空
  9. 【HDU - 1533】Going Home(网络流,二分图最优匹配,KM算法)
  10. Oracle Linux 6.5 RPM安装Mysql 5.7.11
  11. [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub)
  12. Android TV 开发(5)
  13. VS2015 编译问题记录(更新)
  14. debian启动mysql_debian下的mysql服务突然启动失败
  15. Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium
  16. java学习的电脑_请问学习java需要什么配置的笔记本电脑?
  17. Chrome 66之后禁止网页声音自动播放问题解决
  18. javaweb超市管理系统--用户管理
  19. python 写word图表标题_工作汇报神技!用Python三步生成带有图表的word报表
  20. Incorrect result size: expected 1, actual 2

热门文章

  1. [CQOI2016]游记
  2. win10下genymotion启动慢
  3. 【深度学习】SPP空间金字塔网络 fasterrcnn yolo中如何使用SPP网络
  4. 给li标签添加 小圆点
  5. 高通camera Tuning常见面试题
  6. input type=“checkbox“
  7. 小米愿意用鸿蒙吗,小米表态:华为开放麒麟芯片和鸿蒙系统,小米愿意用!华为该如何是好?...
  8. 打开系统相册选取图片
  9. 微信小程序 点击收藏
  10. Win软件 - Sublime 插件安装