用户控件中的图像的MouseDown事件未触发

时间:2013-12-19 21:04:31

标签: c# wpf events routed-events

我在WPF中创建了一个usercontrol,其中包含一个图像。我为此图片声明了MouseDown事件:

<Image x:Name="imgState" Height="300" Width="300" MouseDown="imgState_MouseDown" OpacityMask="#00000000" />

我将这个用户控件放在我的申请表上,但事件并未触发。我对WPF很新,我读到了RoutedEvents,但我真的不明白。如果有人可以帮助并向我解释,我会很高兴!

更新

更改为PreviewMouseDown也没有触发该事件。我尝试将背景设置为透明,甚至尝试使用空白的300x300图像。网格解决方法也不会触发事件。以下是我的代码背后的样子:

private void imgState_MouseDown(object sender, MouseButtonEventArgs e)
{
//Some code here
}

更新2

这是我的整个XAML文件:

<UserControl x:Class="TicTacToe.controls.SingleField"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Image x:Name="imgState" MouseDown="imgState_MouseDown"  Height="300" Width="300" Stretch="None" OpacityMask="#00000000"/>

    </Grid>
</UserControl>

我再次移除了源代码,因为我在运行时从代码中设置了一个,并且添加透明/清晰图像没有帮助。

3 个答案:

答案 0 :(得分:0)

您可能需要 PreviewMouseUp 而不是 MouseDown 事件

<Image x:Name="imgState" Height="300" Width="300" 
 PreviewMouseUp="ImgState_OnPreviewMouseUp" 
 PreviewMouseDown="ImgState_OnPreviewMouseDown"/>

两者中的任何一个,你都可以从那里捕获事件。

答案 1 :(得分:0)

如果上述答案没有帮助:

不是一个非常好的解决方案,但确实工作了很多次:

使用您将举办活动的网格包裹您的图片...

<Grid MouseDown="imgState_MouseDown">
<Image/>
</Grid>

答案 2 :(得分:0)

好的,我自己解决了这个问题。

问题是设置OpacityMask="#00000000"阻止图像出现,因此@lll表示没有任何东西可以击中。我不知道设置何时设置,但我认为在展开Representation标签时会自动发生。

感谢您的帮助!