Silverlight 5 Grid组的MouseLeave响应

用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);
        }

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-20 11:03:33

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

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

Bootstrap辅组类和响应式工具 学习要点: 1.辅组类 2.响应式工具 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒体查询显示或隐藏某些内容. 一.辅助类 Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置. 显示关闭图标等等. 1.情景文本颜色

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

  Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方便,从视觉上很像一个表格的样式,有行,有列的概念,这种效果很适合于需要多多个子控件进行布局,并希望保持左边或者上对齐的效果. 我们来看一个最简单的例子(本文采用Silverlight做演示,在WPF中也是一样的) 使用Grid的时候,一般先定义Grid的行和列的设置,然后在其放置其他控件并且设置他们

第 6 章 辅组类和响应式工具

学习要点: 1.辅组类 2.响应式工具 主讲教师:李炎恢 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具, 辅助类提供了一组类来辅组页面设计,而响应式工具则利用媒体查询显示或隐藏某些内容. 一.辅助类 Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置.显示关闭图标等等. 1.情景文本颜色 样式列表 样式名描述 text-muted 柔和灰 text-primary 主要蓝 text-success 成功绿 text-info 信息蓝 text

辅组类和响应式工具

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

Bootstrap 辅组类和响应式工具

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

H3C组播系列之IP组播概述

一.组播的基本介绍 组播指发送源将产生的单一IP数据包通过网络发送给一组特定接收者的网络传输方式.组播结合了单播和广播的优点,在进行点到多点传输时,发送源不需要关心接受者的数目,仅需要发送一份报文:路由器仅关心接口下是否有接收者,同样不需要关心接收者的数量,所以在路由器之间的链路上也仅传送一份报告. 和单播相比,组播减轻了发送源的负担,并且提高了链路的有效利用率.此外,发送源可以同时发送报文给多个接收者,可以满足低延时应用的需求. 和广播相比,组播方式下路由器仅在有接收者的接口复制报文,报文最终

针对群组资源的操作方法、群组服务器

本发明提供了一种针对群组资源的操作方法.群组服务器和执行针对群组资源的操作的装置,通过在发送给成员设备的成员资源操作请求中携带操作请求标识,以便成员资源所属的成员设备根据所述操作请求标识判断成员设备存储的操作请求标识中是否包含所述操作请求标识,并根据判断结果处理成员资源操作请求.从而能够避对成员资源的操作请求进行重复处理或循环处理. 技术领域 [0001]本发明涉及机器通信(Machine-to-Machine Communications, M2M)技术领域,尤其涉及针对群组资源方法.群组服务

响应式邮件设计创意技巧

响应式设计邮件是企业实现移动邮件优化的方式之一,它使用一组代码以完成电子邮件在台式机,平板电脑或智能手机上的不同阅览呈现,这意味着,无论用户在哪里.何时打开邮件,都能获得最优的用户体验.尽管如此,但据Econsultancy的调查显示,大量的公司目前并没有为移动设备优化的电子邮件,32%的调查对象称“不存在”该策略,39%说只是执行了 “基础性”策略.而据国内最大的邮件营销服务商webpower中国区监测数据显示,国内有近40%邮件在移动设备上打开.响应式设计邮件比传统邮件在移动设备上的点击率.

第6章 辅助类和响应式工具

本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒体查询显示或隐藏某些内容 . 一.辅助类 Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置. 显示关闭图标等等. 1.情景文本颜色 样式列表 样式名 描述 text-muted 柔和灰 text-primary 主要蓝 text-success 成功绿 text-info 信息蓝 text-warning 警告黄 text-danger 危