我在我的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