2012-07-24 42 views
0

我需要支持雙擊的TextBox,但在嘗試編碼時,我堅持使用Silverlight文本框不會引發鼠標左鍵事件,如果我單擊文本區域內部的問題。那麼這裏有什麼可能的解決方案我使用Silverlight 4左鍵單擊Silverlight文本框

回答

2

你應該創建一個從默認TextBox繼承的自定義TextBox控件和重寫OnMouseLeftButtonUp方法,像這樣的:如果你需要處理雙擊

public class MyTextBox : TextBox 
{ 
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) 
    { 
     base.OnMouseLeftButtonUp(e); 
     // Do your stuff here 
    } 
} 

,它將更容易切換到引入點擊計數概念的Silverlight 5。下面是用於處理雙擊教程:http://www.silverlighthostingnews.com/index.php/archives/440 基本上,你將不得不這樣做:

if(e.ClickCount == 2) {...} 

編輯:這裏是如何在Silverlight 4做:

  • 創建自定義文本框是繼承默認TextBox類並覆蓋鼠標事件,像這樣:

-

public class DoubleClickTextBox : TextBox 
{ 
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) 
    { 
     // Do nothing 
    } 
    protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 
    { 
     // Do nothing 
    } 
} 

-

DoubleClickExtender dce = new DoubleClickExtender(textBox, 300) 
dce.DoubleClick += new MyEventHandler(dce_DoubleClick); 
+0

那麼,切換到新版本不取決於我,但thx的解決方案,我猜會使用它。 – noaRAVE 2012-07-24 12:40:26

+0

在SL4中有兩種方法可以處理雙擊,但它更加黑客。這裏是你可以做的:http://www.domagoj.pavlesic.com/DoubleClick-in-Silverlight – 2012-07-24 12:50:36

+0

我編輯了答案,告訴你如何在SL4中做到這一點 – 2012-07-24 13:13:31

0

您可以用這一個作弊的,雖然我沒有試過我自己

  • 將文本框的模板更改爲具有透明覆蓋圖 isHitTestV isible = true
  • 設置疊加層上的雙擊事件。
  • 如果檢測單 點擊疊加,什麼也不做,讓IT泡沫通過
  • 如果檢測到雙擊,設置
    mousebuttoneventargs爲true處理該事件,並執行雙擊行動

請注意,雙擊Silverlight4並不是本機支持的,所以你必須想出一些方法來模擬它。

相關問題