• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>Flah Ria>文章内容
  • silverlight开发技巧—让silverlight支持输入文本框
  • 来源:80s team blog 作者:ai829 2007-09-23 【

众所周知,在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;      
  }
}



上一篇:Silverlight1.0正式版发布   下一篇:flash游戏与RIA的关系
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)