问题描述
我在WPF的窗口中添加了一个image控件,然后想通过该控件的MouseDown事件来捕捉鼠标的位置,可是添加了事件的处理程序后,该事件怎么都不响应,下面是xaml和cs中的代码<Windowx:Class="TrackingForms.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="400"Width="800"><Grid>/////其他的控件////////<Imagex:Name="ImageShow"MouseDown="ImageShow_MouseDown"HorizontalAlignment="Left"Height="334"Margin="287,25,0,0"VerticalAlignment="Top"Width="495"/></Grid></Window>privatevoidImageShow_MouseDown(objectsender,MouseButtonEventArgse){MessageBox.Show("你按了一下鼠标");/////这里我想先测试一下,确实进入到了该事件的处理程序中来//////}我查看了一下初始化的部分,也已经添加了路由事件侦听器,因为这个是控件自带的,自己就生成了事件处理代码#line62"....MainWindow.xaml"this.ImageShow.MouseDown+=newSystem.Windows.Input.MouseButtonEventHandler(this.ImageShow_MouseDown);但是,但是,我非常奇怪的是为什么在控件上点击鼠标,根本进入不到事件中去,一点反应也没有,请大神们帮忙答疑解惑,不甚感激
解决方案
解决方案二:
求大神帮忙解答,在线等
解决方案三:
有人帮忙解答一下吗?
解决方案四:
那是因为没有设置Source属性,只有当鼠标点击了Image控件所显示的图片时,才会引发鼠标事件。也就是说,如果图片尺寸小于控件尺寸,且Stretch=None时,即便设置了Source属性,也可能无法触发鼠标事件。例如:<BorderBackground="AliceBlue"BorderBrush="LightBlue"BorderThickness="1"HorizontalAlignment=Center"VerticalAlignment="Center"><ImageMouseDown="Image_MouseDown"Stretch="None"Width="120"Height="120"><Image.Source><DrawingImage><DrawingImage.Drawing><GeometryDrawingBrush="Crimson"Geometry="M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z"/></DrawingImage.Drawing></DrawingImage></Image.Source></Image></Border>
所以,希望点击Image控件时响应鼠标事件,可以将事件设置在父控件,Border中。