我在我的WPF应用程序中有一个UserControl。 我想调用一个单击事件,并在用户单击UserControl时执行一些操作。 问题是UserControl没有单击事件。 我在网上搜索,发现可以使用MouseLeftButtonUp事件。 我试过了 - 但它没有响应我的点击。 任何想法? 谢谢!UserControl中的Click事件 - WPF
6
A
回答
10
你没有写你正在做的事情,但是如果你需要点击事件,也许你正在编写某种按钮(Button类实际上是“你可以点击的东西”地方)
- 如果您需要在复杂的内容的按钮 - 把你的用户控件按钮
- 里面如果你需要一个按钮,看起来并不像一个按钮写按钮 自定义控件模板
- 如果您需要带有附加功能子类按钮的按钮,请在代码中添加额外的数据/行为,并将显示XAML置于样式中。
3
我认为你的需要PreviewMouseLeftButtonUp(Down)事件更适合。然后,您需要处理ClickCount来计算点击量,然后提出您自己的事件,其他控件将知道您的控件已被点击。处理点击事件的方法有很多。你应该看看this msdn article和this
UPDATE同时处理点击和DoubleClick
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
_myCustomUserControl.MouseLeftButtonUp += new MouseButtonEventHandler(_myCustomUserControl_MouseLeftButtonUp);
_myCustomUserControl.MouseDoubleClick += new MouseButtonEventHandler(_myCustomUserControl_MouseDoubleClick);
}
bool _doubleClicked;
void _myCustomUserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
_textBlock.Text = "Mouse left button clicked twice";
_doubleClicked = true;
e.Handled = true;
}
void _myCustomUserControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_doubleClicked)
{
_doubleClicked = false;
return;
}
_textBlock.Text = "Mouse left button clicked once";
e.Handled = true;
}
}
要测试此示例命名您的控制,_myCustomUserControl和命名_textBlock添加一个TextBlock你MainWindow.xaml
0
为什么不直接使用MouseDown?
把事件的用户控制和简单的做到这些:
private void MyControl_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
MessageBox.Show("Clicked!");
}
}
+2
点击按钮并再次按钮,而不仅仅是按钮。 – ygoe 2014-01-03 22:27:51
相关问题
- 1. 将事件绑定到WPF中的UserControl
- 2. WPF Rectangle没有Click事件
- 3. WPF Listview Columnheader Click事件
- 4. 在Silverlight中的UserControl中公开一个按钮的Click事件
- 5. 父亲的WPF UserControl更改了事件
- 6. UserControl中的事件
- 7. 在复合WinForms的某个组件上处理Click事件UserControl
- 8. C#WPF Tab项目Click事件问题
- 9. WPF命令Click事件处理程序
- 10. 的Click事件
- 11. UIAlertView中Click事件
- 12. 响应数据绑定用户控件中的WPF Click事件
- 13. 来自UserControl的WPF ListBox中ItemTemplate的事件
- 14. UserControl事件
- 15. FlowLayoutPanel中的Click事件
- 16. Jquery中的Click事件
- 17. Knockout.js中的Click事件
- 18. javascript中的Click事件
- 19. KnockoutJS中的Binding Click事件
- 20. 没有WPF中的Click事件处理程序的TreeView ContextMenu
- 21. Usercontrol点击事件调用new usercontrol
- 22. 从外部UserControl中的WPF按钮捕获事件
- 23. Click事件WPF DataGrid的按钮列添加在PowerShell中
- 24. click()事件jquery
- 25. click事件
- 26. click事件
- 27. jQuery .click()事件
- 28. RecyclerView Click事件
- 29. RibbonSplitButton click事件
- 30. Jquery .click事件
我真的不明白你使用ClickCount的是什么意思。你能否用代码演示它?谢谢 – amitairos 2010-07-11 09:29:28
ClickCount是MouseButtonEventArgs的te属性之一。当你声明事件处理程序时,可以通过e.ClickCount访问它。您需要跟踪此值,以了解它是否只是单击一次或多次。 如果(e.ClickCount == 1) //提高你的Click事件在这里 如果(e.ClickCount == 2) //这里养 您的DoubleClick事件如果处理程序是预览(意味着提高准确启动在你的控制下直到父母)你可能应该设置在处理程序e.Handled为true。 – 2010-07-11 09:41:30
我很抱歉,我现在没有在这台机器上安装IDE来发布清晰的代码,如何处理它。 :( – 2010-07-11 09:51:17