转载自:http://topic.csdn.net/u/20071019/13/0af521ac-2c01-46ef-85b5-65cd4501f6ae.html
原文如下:
众所周知,在silverlight1.0beta中是不支持inputtext(输入文本)的,但是我们可以用另外一种方法来实现输入文本的效果。
在silverlight中文本的显示可以用到两种形式
1 textblock
2 glyphs
glyphs是个不可见元素,没法对文字进行排版,而且也不常用,因此我们这个方法就用textblock来做这个inputtext。
下面讲讲原理:
silverlight支持鼠标和键盘输入,因此我们可以利用键盘输入来获取Key的value然后吧把value赋值给textblock,这样就可以简单的实现输入文本的功能了。
下面我们来看看例子:
新建一个xaml文件,在xaml中加入一个textblock,起名叫input_txt。
然后在js里addEventListener,在EventHandle里根据key的value来给textBlock赋不同值,但是这个暂时还不支持中文,因为中文的输入不是简单的键盘事件。
代码如下:
xaml:
<Canvas
xmlns= "http://schemas.microsoft.com/client/2007 "
xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml "
Width= "640 " Height= "480 "
x:Name= "Page "
>
<Canvas.Background >
<LinearGradientBrush EndPoint= "1,0.5 " StartPoint= "0,0.5 " >
<GradientStop Color= "#FF000000 " Offset= "0 "/ >
<GradientStop Color= "#FFFFFFFF " Offset= "1 "/ >
</LinearGradientBrush >
</Canvas.Background >
<Rectangle x:Name= "background " Width= "640 " Height= "480 " Stroke= "#FF000000 " >
<Rectangle.Fill >
<LinearGradientBrush EndPoint= "0.519,1.273 " StartPoint= "0.515,-0.061 " >
<GradientStop Color= "#FF000000 " Offset= "0 "/ >
<GradientStop Color= "#FF5B5A5A " Offset= "1 "/ >
</LinearGradientBrush >
</Rectangle.Fill >
</Rectangle >
<TextBlock Cursor= "Arrow " x:Name= "input_txt " Width= "350 " Height= "20 " Canvas.Left= "151 " Canvas.Top= "132 " Canvas.ZIndex= "4 " FontFamily= "Arial " FontSize= "12 " Foreground= "#FFFFFFFF " TextWrapping= "Wrap "/ >
<Rectangle x:Name= "text_input_bg " Width= "352 " Height= "22 " Stroke= "#FF000000 " Canvas.Left= "149 " Canvas.Top= "129 " Canvas.ZIndex= "3 " >
<Rectangle.Fill >
<LinearGradientBrush EndPoint= "0.528,0 " StartPoint= "0.526,1.45 " >
<GradientStop Color= "#FF000000 " Offset= "0 "/ >
<GradientStop Color= "#FF696969 " Offset= "1 "/ >
</LinearGradientBrush >
</Rectangle.Fill >
</Rectangle >
<TextBlock Width= "113 " Height= "24 " Canvas.Left= "263 " Canvas.Top= "167 " Canvas.ZIndex= "2 " FontFamily= "Arial " FontSize= "14 " Foreground= "#FFFFFFFF " TextWrapping= "Wrap " > <Run Text= "text input solution "/ > </TextBlock >
</Canvas >
javascript:
if (!window.UntitledProject1)
window.UntitledProject1 = {};
UntitledProject1.Page = function()
{
}
UntitledProject1.Page.prototype =
{
handleLoad: function(control, userContext, rootElement)
{
this.control = control;
var page = rootElement.findName( "Page ");
page.addEventListener( "KeyUp ", Silverlight.createDelegate(this, this.handleKeyUp));
},
handleKeyUp: function(sender, keyEventArgs)
{
var input_txt = sender.findName( "input_txt ");
var keyvalue = keyEventArgs.key;
var textvalue;
switch (keyvalue)
{
case 30:
textvalue = "A ";
break;
case 31:
textvalue = "B ";
break;
……
default:
textvalue = " ";
}
input_txt.Text += textvalue;
}
}
转载于:https://www.cnblogs.com/jerry-zheng/archive/2007/12/11/990502.html