值得注意的IsHitTestVisible
这个属性我们平时可能并不怎么用.先来看下MSDN上的解释:

解释的非常专业,然而我并没有看懂.
说说我的理解吧:把这个属性设置为false,看起来没有变化,但操作上已经把他完全忽视了,不触发事件,可以直接点到它下面的东西.
这个属性能方便的解决工作中常见的麻烦,比如下面这个例子:

注意上面那部分.效果很简单,就是个渐变的效果.但是这个渐变贯穿了两列,就使得处理起来有点小麻烦.
当然解决方案有很多:
可以写两个ListBoxItem的样式,第一个放顶部有渐变的背景,和右部保持一致,通过样式选择器来实现.这显然比较麻烦.
还可以在大背景下放个渐变,ListBoxItem的上半部分做成透明,这样相对简单,但不一定能实现理想的效果.
IsHitTestVisible属性就很好的解决了这个问题.直接在上层放个border,背景设置成渐变,IsHitTestVisible设置为false.这样就既能看到渐变效果,又能透过border,直接点到ListBoxItem.设置一个属性就解决了问题,非常方便.相当于在上面放了个蒙板,但是这个蒙板能看到却点不到.
类似的我还想到了一个场景:

这个效果顶层是个图片,IsHitTestVisible为false,透明为0.3.
并不是图片是个背景,然后所有控件都是半透明效果.
见代码:
XMAL:
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="70"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<Border Background="#555F5F">
<Label Content="logo" Foreground="White"></Label>
</Border>
<Grid Grid.Row="1" Background="#AAAFAF">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Button.Click="StackPanel_Click">
<Button Width="132" Height="32" Content="金闪闪" Margin="10"></Button>
<Button Width="132" Height="32" Content="小圆" Margin="10"></Button>
</StackPanel>
<Label Content="我不透明" Background="Green" Foreground="Blue" Width="100" Height="100" Margin="76,29,266,171"></Label>
<Label Content="我不透明" Background="Red" Foreground="Blue" Width="100" Height="40" Margin="112,40,230,220"></Label>
</Grid>
<Border Grid.Row="2" Background="#555F5F">
<Label Content="状态栏" Foreground="White"></Label>
</Border>
</Grid>
<Image Name="img" HorizontalAlignment="Center" VerticalAlignment="Center" Width="0" Height="0" Source="/Image/jinshanshan.jpg" Stretch="Fill" Opacity="0.1" IsHitTestVisible="False"></Image>
</Grid>
后台:
private void StackPanel_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)e.OriginalSource;
string content = btn.Content.ToString();
if (content == "金闪闪")
{
img.Source = new BitmapImage(new Uri(@"/Image/jinshanshan.jpg", UriKind.Relative));
}
if (content == "小圆")
{
img.Source = new BitmapImage(new Uri(@"/Image/xiaoyuan.jpg", UriKind.Relative));
} DoubleAnimation daX = new DoubleAnimation();
daX.From = ;
daX.To = ;
daX.FillBehavior = FillBehavior.HoldEnd;
Storyboard.SetTarget(daX, img);
Storyboard.SetTargetProperty(daX, new PropertyPath(Image.WidthProperty));
DoubleAnimation daY = new DoubleAnimation();
daY.From = ;
daY.To = ;
daY.FillBehavior = FillBehavior.HoldEnd;
Storyboard.SetTarget(daY, img);
Storyboard.SetTargetProperty(daY, new PropertyPath(Image.HeightProperty));
DoubleAnimation daOp = new DoubleAnimation();
daOp.From = ;
daOp.To = 0.3;
daOp.FillBehavior = FillBehavior.HoldEnd;
Storyboard.SetTarget(daOp, img);
Storyboard.SetTargetProperty(daOp, new PropertyPath(Image.OpacityProperty)); Storyboard sb = new Storyboard();
sb.Children.Add(daX);
sb.Children.Add(daY);
sb.Children.Add(daOp);
sb.Begin();
}
值得注意的IsHitTestVisible的更多相关文章
- 【Android】开发中个人遇到和使用过的值得分享的资源合集
Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...
- CSS3 值得称赞新特性
Html5和CSS3相信大家现在都已不陌生了吧,但CSS3哪些新特性值得我们去称赞呢? 首先还是让大家来看几张效果图,相信大家看到这些效果图,肯定会说这些效果只用CSS是如何实现的呢? 1.3D正方形 ...
- Java 程序员们值得一看的好书推荐
"学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一 ...
- .NET开发人员值得关注的七个开源项目 .
NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...
- 值得推荐的C/C++框架和库
值得推荐的C/C++框架和库 [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看 ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- Build2016上值得一看的大数据相关Session
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:Build2016开完很久了,现在才来回顾下,就说说那些和大数据相关的Session, ...
- 10款最新流行的 jQuery 插件,值得你收藏
10款最新流行的 jQuery 插件,值得你收藏 http://www.cnblogs.com/lhb25/p/10-new-popular-jquery-plugins-check.html 你应该 ...
- python爬取返利网中值得买中的数据
先使用以前的方法将返利网的数据爬取下来,scrapy框架还不熟练,明日再战scrapy 查找目标数据使用的是beautifulsoup模块. 1.观察网页,寻找规律 打开值得买这块内容 1>分析 ...
随机推荐
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- C# - 多线程 之 进程与线程
并行~并发 并发 Concurrency,逻辑上的同时发生,一个处理器(在不同时刻或者说在同一时间间隔内)"同时"处理多个任务.宏观上是并发的,微观上是按排队等待.唤醒.执行的步骤 ...
- PHP变量
变量的声明 PHP变量声明必须是$(美元符号)+变量名进行命名,同时在=(赋值操作符)后进行赋值 声明后的变量不是仅可以在一个<?php 这里是php代码 ?>使用,它还可以在当前页面所有 ...
- 开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍
一.项目背景 我们是传统行业,但是我们有一颗不传统的心.企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台.一提到大数据平台,大家往往想到Hadoop.Spark.Nosql.分布式等等, ...
- java List的排序
List自定义排序 1.第一种方法,就是list中对象实现Comparable接口,重写compareTo接口, 对排序的字段进行比较.2.第二种方法,就是在重载Collections.sort方法. ...
- SpringMVC的执行流程(二)
文字解析: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配 DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交 ...
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)
距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大 ...
- 贝塞尔曲线(UIBezierPath)属性、方法汇总
UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...
- [Modern OpenGL系列(四)]在OpenGL中使用Shader
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51347440 在上一篇文章中已经介绍了OpenGL窗口的创建.本文接着说如 ...
- SQL server学习
慕课网sql server学习 数据库第一印象:desktop--web server--database server** 几大数据库:sql server.oracle database.DB2. ...