这与SO Question 3222456 ....
有关我正在创建我自己的UserControl,其中包含一些图像和TextBlock,没有别的。我想在点击整个UserControl时触发一个事件。我的问题(或误解)是在WPF中似乎只有我可以挂钩的MouseUp事件,没有MouseClick。
那么最佳做法是什么?我可以找到的所有示例都表现为WPF中的mouseUp等同于click事件,但这不对。如果用户在屏幕的一个部分中执行了鼠标操作,按住鼠标直到它超出我的控制范围,然后释放鼠标,该怎么办?即使它触发了MouseUp事件,也不是点击我的控件。
那么如何为UserControl获取真正的MouseClick事件?
答案 0 :(得分:2)
一种非常简单的方法是将整个内容放入一个几乎为空的模板按钮,并回复Button
的{{1}}事件。
这看起来像
旧:
OnClick
新:
<UserControl ...>
<Grid> ... </Grid>
</UserControl>
答案 1 :(得分:2)
为什么不直接使用MouseDown?
将事件放在用户控件中,然后执行以下操作:
private void MyControl_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
MessageBox.Show("Clicked!");
}
}