博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF窗口阴影
阅读量:4556 次
发布时间:2019-06-08

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

原文:

起因

在以前项目中,需要给用户一定提示。设计师建议在鼠标进入时显示窗口阴影,离开时取消窗口阴影。

尝试1

很自然,都会想到直接在窗口的内容或者自定义窗口的最外层元素上加效果。示例如下:

很不幸,上述方法不会生效。原因何在?窗口的非工作区(也就是Grid的四周)的渲染是由系统控制。虽然不清楚是绘出来了被遮住了还是根本没绘出来,但是告诉了我们此路不通。

解决方案

还好我们用的是WPF,可以自己定义模板和样式。于是简单测试了一下就发现了方案。下面就是我使用的样式一个示例(省略了模拟的控制按钮和其他的一些功能)

注意事项

  • 必须将OverridesDefaultStyle和AllowsTransparency设为true。
  • 根据需要设置相应的属性,比如外层Border的Padding要与阴影的属性保持一致,示例中是15。

不足

  1. 有时阴影显隐失灵 。
  2. 效率低下,特别是经常需要更新界面时(所以最后我们放弃这个方案了) 。
  3. 上述样式存在一个问题,即在用到界面验证时,会发生验证提示无法显示的情况。改进也很简单,在样式中手动添加一个AdornerLayer。原因在于验证常用的AdornedElementPlaceholder中包含一个Adorner,而Adorner必须寄宿于AdornerLayer。系统默认的Window样式中包含AdornerLayer,所以显示正常。
posted on
2019-01-04 00:55 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10217747.html

你可能感兴趣的文章
matlab去云雾
查看>>
500lines项目简介
查看>>
Asp.net core logging 日志
查看>>
BOM浏览器对象模型
查看>>
Jq 遍历each()方法
查看>>
Android源码分析:Telephony部分–phone进程
查看>>
关于 redis.properties配置文件及rule
查看>>
WebService
查看>>
关于Java中重载的若干问题
查看>>
Java中start和run方法的区别
查看>>
23种设计模式中的命令模式
查看>>
[转载]年薪10w和年薪100w的人,差在哪里?
查看>>
shell 日期参数
查看>>
package的使用
查看>>
括号生成
查看>>
cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()...
查看>>
FIR滤波器设计
查看>>
【Uva 1252】Twenty Questions
查看>>
前端--jstree--异步加载数据
查看>>
CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位
查看>>