我需要支持双击的TextBox,但在尝试编码时,我遇到了一个问题,即如果我在文本区域内单击,Silverlight文本框不会引发左键鼠标事件。那么这里可能有哪些解决方案?我正在使用Silverlight 4。
答案 0 :(得分: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中的操作方法:
-
public class DoubleClickTextBox : TextBox
{
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
// Do nothing
}
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
// Do nothing
}
}
在项目类中添加DoubleClickExtender class。
在您的代码隐藏中,附加到双击事件:
-
DoubleClickExtender dce = new DoubleClickExtender(textBox, 300)
dce.DoubleClick += new MyEventHandler(dce_DoubleClick);
答案 1 :(得分:0)
你可能会欺骗这个,虽然我自己没有尝试过这个
请注意,本机不支持双击Silverlight4,因此您必须采用某种方式来模拟它。