0

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

4

2 回答 2

2

您应该创建一个继承自默认值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);
于 2012-07-24T12:33:08.693 回答
0

你也许可以用这个作弊,虽然我自己没有尝试过

  • 将文本框的模板更改为具有 IsHitTestVisible = true 的透明覆盖
  • 在叠加层上设置双击事件。
  • 如果您检测到单击叠加层,则什么也不做,让它冒泡
  • 如果检测到双击,请将
    mousebuttoneventargs 的事件处理设置为 true 并执行双击操作

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

于 2012-07-24T12:35:42.457 回答