[Silverlight入门系列]ChildWindow的Focus问题(子窗体中自动给控件设置焦点聚焦)

上回讲了《如何在ViewModel里设置Textbox聚焦(focus)》,有童鞋反馈说Focus在ChildWindow子窗体里面不工作,今天专门测试了一下,确实有这个问题。最后发现只有一个办法:重载ChildWindow的OnOpened事件。ChildWindow的加载执行顺序是:InitializedLoadedOpened(包括动画执行). 所以只要在你的ChildWindow的*.xaml.cs里面重载即可。

10.25

然后用《如何在ViewModel里设置Textbox聚焦(focus)》这篇文章里面的方法,在ViewModel里面设定给谁聚焦即可。以上代码截图是我的测试代码,逻辑是:如果是新用户,那就在用户名输入框聚焦;如果是老用户(上一次登录点击了记住用户名),那就自动加载用户名,聚焦到密码输入框。这个逻辑是在ViewModel里面,绑定到界面的。如果你的逻辑没我这么复杂,那就txt.Focus()。

(注:我也试了给其中各个控件加TabIndex=”1”, 2, 3…的方法,不灵。当然,加还是要加的,方便用户Tab切换焦点。)

 

总之,用MVVM模式进行Silverlight开发会碰到很多类似的问题,这个复杂度比CodeBehind的要大的多,童鞋们要注意培养自己解决问题的能力。

posted on 2011-10-25 16:58 Mainz 阅读(477) 评论(2) 编辑 收藏

导航

公告

统计