none
求助:Silverlight 2 Beta1中TextBox的问题 RRS feed

  • 问题

  •  

    1.将一TextBox嵌在一Canvas中,使其Focus一次,然后将TextBox从Canvas.Children中Remove,再将TextBox加入Canvas.Children,则TextBox变得非常奇怪,似乎对所有鼠标事件均不再响应,包括无法使其再Focus。请问这是怎么回事?

     

    2.TextBox目前是否支持密码框风格的显示?

    2008年3月10日 5:42

答案

  •  sgzwkrm 写:

     

    1.这个问题跟我绑定事件无关的,我指的是最基本的一个TextBox应该有的反应(比如Focus)。我在silverlight.net的论坛提交了这一问题,Shawn Wildermuth觉得这像个bug,让我提交到bug论坛,于是我又在那发了一帖,很快有人反应遇到了相同的问题,所以这应该就是个bug了。

         而我现在又发现了TextBox更多的问题,比如你初始设置一TextBox.Visibility = Collapsed,那么当年更改其为Visible时,它会在最开始不可见,而直到你用鼠标点击它才会出现。另外有时TextBox在某些动画后会发生光标消失的情况。

         不过除了一些无关痛痒的小问题外,我都找到了回避的方法,如果有遇到同样问题而无法解决的可以在此跟帖提问。

     

    2.我自己实现了一个基本可用的密码框,然后发现TextBox的光标以及很多内置的接受按键与显示的方法都是无法控制的……当然可能是我太菜,如果有高手能把当前的TextBox改造成一完全自然的密码框,请一定告之!

         我现在的做法是:设置TextBox为readonly(这样以回避内置的接受方法),然后利用TextBox的KeyDown事件自定义接受按键的方法。而密码框无法通过按Backspace来修改,所以要在框旁边额外添加一Clear按钮。

     

    1.我试了下你说的情况,确实有这样的问题。原因是这样的,由于Canvas每次新增元素后都会Focus到这个新增的元素上,所以相当于你第一次Focus以后就一直在循环所以对事件等也就没有相应了,只需要将getfocus的取消对新元素getfocus的绑定,而使用别的元素的事件来触发,就可以做到了,不过还是不明白你为什么要怎样做 :)

    2.我很想看看你实现的基本可用的密码框是什么样的。我没办法重现你说的很多内置的接受按键和显示的方法,与其这样麻烦的做一个密码框,不如使用Silverlight之前的做法用html密码框来代替,那样做的话岂不是更好?

    2008年3月17日 2:53

全部回复

  • 1.不太明白你要实现的功能,事件不再响应是否是因为你将绑定移除了?需要重新绑定事件吧。

    2.TextBox目前好像还不支持密码框风格的现实,不过应该很快就会支持了

    2008年3月13日 3:20
  •  

    1.这个问题跟我绑定事件无关的,我指的是最基本的一个TextBox应该有的反应(比如Focus)。我在silverlight.net的论坛提交了这一问题,Shawn Wildermuth觉得这像个bug,让我提交到bug论坛,于是我又在那发了一帖,很快有人反应遇到了相同的问题,所以这应该就是个bug了。

         而我现在又发现了TextBox更多的问题,比如你初始设置一TextBox.Visibility = Collapsed,那么当年更改其为Visible时,它会在最开始不可见,而直到你用鼠标点击它才会出现。另外有时TextBox在某些动画后会发生光标消失的情况。

         不过除了一些无关痛痒的小问题外,我都找到了回避的方法,如果有遇到同样问题而无法解决的可以在此跟帖提问。

     

    2.我自己实现了一个基本可用的密码框,然后发现TextBox的光标以及很多内置的接受按键与显示的方法都是无法控制的……当然可能是我太菜,如果有高手能把当前的TextBox改造成一完全自然的密码框,请一定告之!

         我现在的做法是:设置TextBox为readonly(这样以回避内置的接受方法),然后利用TextBox的KeyDown事件自定义接受按键的方法。而密码框无法通过按Backspace来修改,所以要在框旁边额外添加一Clear按钮。

    2008年3月15日 10:07
  •  sgzwkrm 写:

     

    1.这个问题跟我绑定事件无关的,我指的是最基本的一个TextBox应该有的反应(比如Focus)。我在silverlight.net的论坛提交了这一问题,Shawn Wildermuth觉得这像个bug,让我提交到bug论坛,于是我又在那发了一帖,很快有人反应遇到了相同的问题,所以这应该就是个bug了。

         而我现在又发现了TextBox更多的问题,比如你初始设置一TextBox.Visibility = Collapsed,那么当年更改其为Visible时,它会在最开始不可见,而直到你用鼠标点击它才会出现。另外有时TextBox在某些动画后会发生光标消失的情况。

         不过除了一些无关痛痒的小问题外,我都找到了回避的方法,如果有遇到同样问题而无法解决的可以在此跟帖提问。

     

    2.我自己实现了一个基本可用的密码框,然后发现TextBox的光标以及很多内置的接受按键与显示的方法都是无法控制的……当然可能是我太菜,如果有高手能把当前的TextBox改造成一完全自然的密码框,请一定告之!

         我现在的做法是:设置TextBox为readonly(这样以回避内置的接受方法),然后利用TextBox的KeyDown事件自定义接受按键的方法。而密码框无法通过按Backspace来修改,所以要在框旁边额外添加一Clear按钮。

     

    1.我试了下你说的情况,确实有这样的问题。原因是这样的,由于Canvas每次新增元素后都会Focus到这个新增的元素上,所以相当于你第一次Focus以后就一直在循环所以对事件等也就没有相应了,只需要将getfocus的取消对新元素getfocus的绑定,而使用别的元素的事件来触发,就可以做到了,不过还是不明白你为什么要怎样做 :)

    2.我很想看看你实现的基本可用的密码框是什么样的。我没办法重现你说的很多内置的接受按键和显示的方法,与其这样麻烦的做一个密码框,不如使用Silverlight之前的做法用html密码框来代替,那样做的话岂不是更好?

    2008年3月17日 2:53
  • 严格来说这不是一个bug, 我们在开发时也遇到与你同样的问题,这个问题主要发生在需要runtime时更新内容,我的解决方案是加一个user control, 这个user control继承TextBox,在user control初始化的时候加你需要的事件,这样就可以保证每次Children.Add的时候加入事件。

    更详细的信息可查看我在英文Silverlight论坛上的留言。

     

    Frank Wu

    Software Developer, MCSD for .Net

    R&D, Survalent Technology, Canada

    frankwu@survalent.com

     

    2008年4月30日 13:18