用Silverlight 5作个用户控件,即是用Grid画几个格子。分别显示几张透明图片。效果是显示中间那张,点击显示的图片后将其他几张图片一起显示出来,鼠标立马这个用户控件范围后自己主动隐藏点击后显示出来的图片

xaml代码例如以下:

       <Grid x:Name="oViewImg" Height="280" Width="280">
<Grid.RowDefinitions>
<RowDefinition Height="37"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="37"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="37"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="37"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image x:Name="img01" Source="/img/img01.png" Grid.Row="0" Grid.Column="0"/>
<Image x:Name="img02" Source="/img/img02.png" Grid.Row="0" Grid.Column="2"/>
<Image x:Name="img02" Source="/img/img03.png" Grid.Row="2" Grid.Column="0"/>
<Image x:Name="img03" Source="/img/img04.png" Grid.Row="2" Grid.Column="2"/>
<Image x:Name="oImage" Source="/img/temp/img.png" Grid.Column="1" Grid.Row="1" Height="206"/>
</Grid>

目标是:初始隐藏img01-img04仅仅显示oImage图片,点击oImage后再显示出这次张图片,然后鼠标离开oViewImg范围后隐藏img01-img04。

我非常理想的写下下面代码:

        public scLampItem(mLabmpItem labmp)
        {
            this.oImage.MouseLeftButtonDown += oyiboyCode_MouseLeftButtonDown;
           this.oViewImg.MouseLeave += oyiboyCode_MouseLeave;</span>
        }         void oyiboyCode_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.img00.Visibility = System.Windows.Visibility.Visible;
            this.img02.Visibility = System.Windows.Visibility.Visible;
            this.img20.Visibility = System.Windows.Visibility.Visible;
            this.img22.Visibility = System.Windows.Visibility.Visible;
        }
        void oyiboyCode_MouseLeave(object sender, MouseEventArgs e)</span>
        {
            this.img00.Visibility = System.Windows.Visibility.Collapsed;
            this.img02.Visibility = System.Windows.Visibility.Collapsed;
            this.img20.Visibility = System.Windows.Visibility.Collapsed;
            this.img22.Visibility = System.Windows.Visibility.Collapsed;
        }

然后抓狂的事来了。鼠标离开oImage就立马隐藏了四张图片。而不是我想象的那样,移出了oViewImg的范围才触发MouseLeave事件。问了度娘后才知道。Grid没有背景/背景色的情况下是不能触发事件的。也就是鼠标移到oImage和img01-img02之间的空白区域时就触发了MouseLeave事件。为此猛钻牛角尖去找鼠标位置搜索妄想通过计算鼠标的位置来进行推断鼠标是否在Grid范围之类的办法去来触发隐藏操作。忙乎了一上午,中午吃饭时突然想到...没背景和背景色的情况下不能触发,我给它个背景色不即可了吗。

然后吃完饭后写下了下面代码。

        public scLampItem(mLabmpItem labmp)
{
this.oImage.MouseLeftButtonDown += oyiboyCode_MouseLeftButtonDown;
this.oViewImg.MouseLeave += oyiboyCode_MouseLeave;
} void oyiboyCode_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.img00.Visibility = System.Windows.Visibility.Visible;
this.img02.Visibility = System.Windows.Visibility.Visible;
this.img20.Visibility = System.Windows.Visibility.Visible;
this.img22.Visibility = System.Windows.Visibility.Visible;
//给Grid一个全然透明的背景色。以保证整Grid范围都能触发事件
this.oViewImg.SetValue(Grid.BackgroundProperty, new SolidColorBrush(Color.FromArgb(0, 255, 255, 255)));
}
void oyiboyCode_MouseLeave(object sender, MouseEventArgs e)
{
this.img00.Visibility = System.Windows.Visibility.Collapsed;
this.img02.Visibility = System.Windows.Visibility.Collapsed;
this.img20.Visibility = System.Windows.Visibility.Collapsed;
this.img22.Visibility = System.Windows.Visibility.Collapsed;
//移除Grid背景色。保证img01-img04隐藏后的区域不会触发事件
this.oViewBigImg.ClearValue(Grid.BackgroundProperty);
}

为这个折腾了一上午,亏死了。作为经验记录一下,省得下次还这样浪费脑力和时间

Silverlight 5 Grid组的MouseLeave响应的更多相关文章

  1. 第二百三十六节,Bootstrap辅组类和响应式工具

    Bootstrap辅组类和响应式工具 学习要点: 1.辅组类 2.响应式工具 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒 ...

  2. 为WPF和Silverlight的Grid添加边框线(zz)

      Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方 ...

  3. CSS Grid布局,实现响应式设计

    columns(列) 和 rows(行) 为了使其成为二维的网格容器,我们需要定义列和行.让我们创建3列和2行.我们将使用grid-template-row和grid-template-column属 ...

  4. 快速使用CSS Grid布局,实现响应式设计

    常用Grid布局属性介绍 下面从一个简单Grid布局例子说起. CSS Grid 布局由两个核心组成部分是 wrapper(父元素)和 items(子元素). wrapper 是实际的 grid(网格 ...

  5. Bootstrap(6)辅组类和响应式工具

    一.辅助类 Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置.显示关闭图标等等. 1.情景文本颜色 各种色调的字体 <p class="text-m ...

  6. 用 CSS Grid 布局制作一个响应式柱状图

    最新一段时间比较喜欢玩弄图表,出于好奇,我想找出比较好的用 CSS 制作图表的方案.开始学习网上开源图表库,它对我学习新的和不熟悉的前端技术很有帮助,比如这个:CSS Grid. 今天和大家分享我学到 ...

  7. Bootstrap 辅组类和响应式工具

    1.情景文本颜色 //各种色调的字体 <p class="text-muted">Bootstrap 视频教程</p> <p class=" ...

  8. 为WPF和Silverlight的Grid添加边框线

    http://www.cnblogs.com/chenxizhang/archive/2011/09/22/2185414.html

  9. Silverlight技术调查(4)——完成的调查结果

    原文 Silverlight技术调查(4)——完成的调查结果 客户端使用Silverlight+DXperience,可以在线编辑各种常见文本及富文本文档(doc.docx.rtf.txt.html… ...

随机推荐

  1. smtp发送邮件记得结尾发送"\r\n.\r\n"

    前段时间老板安排我修复一个邮件服务器后台C程序的bug,这个功能是邮件强制发送功能,从邮件管理后台将垃圾邮件发送出去. 因为服务器是debian系统,所以我用dbg配合日志大致跟踪后,追踪到了读取邮件 ...

  2. 洛谷 P1014 Cantor表【蛇皮矩阵/找规律/模拟】

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  3. CCCC L2-003. 月饼[贪心/类似hdu贪心老鼠]

    L2-003. 月饼 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不 ...

  4. Css 基础学习

    css 基本选择器 css基本选择器有三种方法 第一种: class选择器 .c1{ color: red;} <div class='c1'>hello world</div> ...

  5. 为Zepto添加Slide动画效果

    一.缘由 公司的移动端项目,采用zepto为主要框架,但是zepto毕竟是精简版的jquery,体积小了,功能自然没有这么强大,特别是动画和选择器这两块,需要我们自己去拓展. 在项目开发过程中,很多页 ...

  6. shell实践--shell内嵌指令实现查看上线时间

    实践小点子: 1. 做一个shell 内嵌指令例如:ls,cd,pwd这样     就实现查看上线多久:   解决办法有两种: 1) 利用脚本,如新指令为look;利用别名的方法,将look.sh脚本 ...

  7. Oracle Form's Trigger Tutorial With Sample FMB

    Created an Oracle Form to handle specific events / triggers like When-New-Form-Instance, Pre-Insert, ...

  8. 【IntelliJ IDEA】代码中出现Usage of API documented as @since 1.8+ more..

    在idea中写代码过程中.有这种报错出现: Usage of API documented as @since 1.8+ more.. 修改JDK版本的几个地方 最后,在pom.xml文件中添加: & ...

  9. 【ecplise】快捷键 集合

    1.查看本方法在哪里被调用过 光标放在本方法名上 快捷键: Ctrl+Shift+G

  10. 快速乘法,幂计算 hdu5666

    在实际应用中为了防止数据爆出,在计算a*b%m和x^n%m时,可以采用此方法.在数论中有以下结论: a*b%m=((a%m)*(b*m))%m ; (a+b)%m=(a%m+b%m)%m ; _int ...