WPF UserControl单击

时间:2012-10-23 06:52:37

标签: wpf user-controls click

这与SO Question 3222456 ....

有关

我正在创建我自己的UserControl,其中包含一些图像和TextBlock,没有别的。我想在点击整个UserControl时触发一个事件。我的问题(或误解)是在WPF中似乎只有我可以挂钩的MouseUp事件,没有MouseClick。

那么最佳做法是什么?我可以找到的所有示例都表现为WPF中的mouseUp等同于click事件,但这不对。如果用户在屏幕的一个部分中执行了鼠标操作,按住鼠标直到它超出我的控制范围,然后释放鼠标,该怎么办?即使它触发了MouseUp事件,也不是点击我的控件。

那么如何为UserControl获取真正的MouseClick事件?

2 个答案:

答案 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!");
     }
 }