用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. ashx输出文字,执行JavaScript,输出图片等

    原文发布时间为:2009-09-30 -- 来源于本人的百度文章 [由搬家工具导入] 一提到Ashx文件,我们就会想到http handler以及图片加载(在之前我们一般使用ASPX或者Webserv ...

  2. request库

    0x00  环境简介和安装 我这里使用的是python2.7版本,直接使用pycharm2018这款IDE. 首先在pycharm中配置一下virtualenv环境,virtualenv是一个创建独立 ...

  3. 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表

    在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...

  4. HDU5036 Explosion(期望&&bitset)

    #include <iostream> #include <cstring> #include <string> #include <vector> # ...

  5. hdu 4525(数学)

    威威猫系列故事——吃鸡腿 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  6. C# .NET4.0 改为 到.NET2.0 时 TypedTableBase 报错解决方法

    .NET 4.0 降版本 到.NET 2.0.不出意外,问题必然来了. 编译错误一: 错误 1 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?)解决: 删掉该引用 ...

  7. 常用的Linux系统命令

    一.linux简介                                                                                            ...

  8. codevs——1169 传纸条(棋盘DP)

    2008年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 小渊和小 ...

  9. word 插入空白偶数页(论文、报告等写作常用)

    目前在写大论文的过程中,需要在偶数页中插入一个空白页,但是又不想在下面加上页码,所以采用通常的方式并不妥,所以就用到了这篇博文中内容,采用奇偶页的方式插入空白偶数页,而且偶数页也不会在上面出现任何的字 ...

  10. HTTP协议header头域

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内 容请参考RFC2616.HTTP协议采用了请求/响应模型.客 ...