我在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>
我再次移除了源代码,因为我在运行时从代码中设置了一个,并且添加透明/清晰图像没有帮助。
答案 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
标签时会自动发生。
感谢您的帮助!