首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Silverlight 4的浏览器外弹出窗口中设置TextBox焦点

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

Stack Overflow用户
提问于 2009-12-12 09:38:04
回答 6查看 10.1K关注 0票数 4

我有一个简单的ChildWindow弹出在Silverlight 4(测试版)。

out-of-browser重要:--这是一个应用程序。

打开窗口时,我希望自动将焦点设置在TextBox控件上。

我试过几件事:

下面的代码似乎什么也不做。我认为在“加载”之后,控件还没有准备好被聚焦。

代码语言:javascript
复制
    private void ChildWindow_Loaded(object sender, RoutedEventArgs e)
    {
          textBox1.Focus();
    }

这很管用,但它很酷。

代码语言:javascript
复制
    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测试版浏览器外运行时会出现错误。

EN

回答 6

Stack Overflow用户

发布于 2011-02-11 06:23:50

我在SilverLight 4 (OOB)中也有同样的问题,我注意到制表符序列会将焦点设置到一个我看不到的控件上。所发生的事情似乎是将焦点设置为您的控件(首先是选项卡序列中的一个),然后由于某种原因焦点移动到ContentControl (name ="content"),后者(我认为)是子窗口的父窗口。

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

代码语言:javascript
复制
   <Style  TargetType="ContentControl" >
         <Setter Property="IsTabStop" Value="false"/>
    </Style>

同样的问题发生在MainPage上的制表符序列上。此样式也将修复此问题。

票数 3
EN

Stack Overflow用户

发布于 2010-01-29 19:24:09

你走在正确的轨道上。您需要处理两个测试用例:

  1. 在浏览器中设置焦点。2.将焦点设置在浏览器之外.

您在加载事件中显示的代码将在浏览器之外正常工作。所有需要做的就是重构它来处理这两种情况:

代码语言:javascript
复制
private void ChildWindow_Loaded(object sender, RoutedEventArgs e)
{
    if (App.current.IsRunningOutOfBrowser)
    {
        textBox1.Focus();
    }
    else
    {
        System.Windows.Browser.HtmlPage.Plugin.Focus();
        textBox1.Focus();
    }
}

这应该对你有好处。

票数 2
EN

Stack Overflow用户

发布于 2011-12-02 09:27:45

感谢所有的帖子,但是在做了一些调查之后,下面的事情对我很有帮助

在萨马勒:

代码语言:javascript
复制
<TextBox VerticalAlignment="Center" HorizontalAlignment="Left" FontFamily="Arial" FontSize="12" Height="25" Width="200" Margin="38,50,0,0" Name="txtUserName" Text="{Binding LoginInfo.UserName,Mode=TwoWay, NotifyOnValidationError=True}"  IsTabStop="True" TabIndex="1" ></TextBox>

// Initialiazing Main Part View Model
/// </summary>
/// <param name="mainPartViewModel"></param>
public ChildWindowLoginControl(MainPartViewModel mainPartViewModel)
{
     InitializeComponent();
     this.DataContext = mainPartViewModel;
     System.Windows.Browser.HtmlPage.Plugin.Focus();
     this.GotFocus += (s, e) => { txtUserName.Focus(); };
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1892891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档