微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Silverlight 4浏览器外弹出窗口中将焦点设置在TextBox上

我在Silverlight 4(测试版)中有一个简单的 ChildWindow弹出窗口.

重要提示:这是一个不在浏览器中的应用程序.

我希望在窗口打开时自动将焦点放在TextBox控件上.

我尝试了几件事:

以下代码似乎没有做任何事情.在“加载”之后我不认为控件已经准备就绪了.

private void ChildWindow_Loaded(object sender,RoutedEventArgs e)
    {
          textBox1.Focus();
    }

这有效,但其笨重.

private void ChildWindow_GotFocus(object sender,RoutedEventArgs e)
    {
          if (_firstTime == true) {
              textBox1.Focus();
             _firstTime = false;
          }
    }

有没有更好的方法?我总是不得不在WinForms中做这样可怕的事情,但希望不再需要.

注意:此similar question仅适用于浏览器.它建议调用System.Windows.browser.HtmlPage.Plugin.Focus();这不起作用,实际上在Silverlight 4 beta浏览器上运行时会出错.

解决方法

我在SilverLight 4(OOB)中遇到了同样的问题,我注意到选项卡序列会将焦点设置为我无法看到的控件.似乎正在发生的事情是焦点被设置为您的控件(选项卡序列中的第一个),然后由于某种原因焦点移动到ContentControl(name =“content”),其中(我认为)是父的孩子的窗户.

认情况下,ContentControl的IsTabStop = true.
看到….
Why would I want IsTabStop set to true on a ContentControl?
要为应用中的所有ContentControl设置ContentControl.IsTabStop = false,请将其添加到styles.xaml中.

<Style  targettype="ContentControl" >
         <Setter Property="IsTabStop" Value="false"/>
    </Style>

MainPage上的选项卡序列也会出现同样的问题.这种风格也会解决这个问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐