C# 左键单击Silverlight文本框

C# 左键单击Silverlight文本框,c#,silverlight,textbox,mouseclick-event,C#,Silverlight,Textbox,Mouseclick Event,我需要支持双击的TextBox,但在尝试编写代码时,我遇到了一个问题,Silverlight TextBox在单击文本区域内部时不会引发鼠标左键事件。那么,这里可能的解决方案是什么?我正在使用Silverlight 4。您应该创建一个自定义textbox控件,该控件继承默认的textbox,并重写OnMouseLeftButtonUp方法,如下所示: public class MyTextBox : TextBox { protected override void OnMouseLef

我需要支持双击的TextBox,但在尝试编写代码时,我遇到了一个问题,Silverlight TextBox在单击文本区域内部时不会引发鼠标左键事件。那么,这里可能的解决方案是什么?我正在使用Silverlight 4。

您应该创建一个自定义textbox控件,该控件继承默认的
textbox
,并重写
OnMouseLeftButtonUp
方法,如下所示:

public class MyTextBox : TextBox
{
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonUp(e);
        // Do your stuff here
    }
}
如果您需要处理双击,那么切换到Silverlight 5会更容易,它引入了点击计数的概念。以下是处理双击的教程: 基本上,您只需执行以下操作:

if(e.ClickCount == 2) {...}
编辑:以下是在Silverlight 4中的操作方法:

  • 创建继承默认textbox类的自定义textbox并覆盖鼠标事件,如下所示:
-

  • 在项目类中添加

  • 在代码隐藏中,附加到双击事件:

-


你也许可以用这个作弊,尽管我自己没试过

  • 更改文本框的模板,使其具有 IshittesVisible=真
  • 在覆盖上设置双击事件
  • 如果你发现一个 单击覆盖层,不做任何操作,让它冒泡通过
  • 如果检测到双击,请设置的事件已处理
    mousebuttoneventargs为true并执行双击操作

请注意,Silverlight4本机不支持双击,因此您必须想出一些方法来模拟这种情况。

好吧,切换到新版本并不取决于我,但thx是解决方案,我想我会使用它。在SL4中,有一些方法可以处理双击,但它更粗糙。以下是您可以执行的操作:
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);