我需要支持双击的文本框,但是在尝试对其进行编码时,我遇到了一个问题,即如果我在文本区域内单击,Silverlight 文本框不会引发鼠标左键事件。那么这里有什么可能的解决方案?我正在使用 Silverlight 4。
问问题
1519 次
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类。
在您的代码隐藏中,附加到双击事件:
-
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 回答