如何在Silverlight中提供文本框焦点?

Ben*_*old 32 silverlight textbox focus

在我的Silverlight应用程序中,我似乎无法将焦点带到TextBox控件.在各种帖子的推荐下,我将IsTabStop属性设置为True,我使用的是TextBox.Focus().虽然UserControl_Loaded事件正在触发,但TextBox控件没有获得焦点.我在下面包含了我非常简单的代码.我错过了什么?谢谢.

Page.xaml

<UserControl x:Class="TextboxFocusTest.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Loaded="UserControl_Loaded" 
    Width="400" Height="300">

    <Grid x:Name="LayoutRoot" Background="White">        
        <StackPanel Width="150" VerticalAlignment="Center">            
            <TextBox x:Name="RegularTextBox" IsTabStop="True" />    
        </StackPanel>        
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

Page.xaml.cs

using System.Windows;
using System.Windows.Controls;

namespace PasswordTextboxTest
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            RegularTextBox.Focus();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 41

我在silverlight.net上找到了这个,并且通过在调用RegularTextBox.Focus()之前添加对System.Windows.Browser.HtmlPage.Plugin.Focus()的调用,能够让它为我工作:

   private void UserControl_Loaded(object sender, RoutedEventArgs e)
   {        
      System.Windows.Browser.HtmlPage.Plugin.Focus();
      RegularTextBox.Focus();
   }
Run Code Online (Sandbox Code Playgroud)


rek*_*kle 23

Plugin.Focus(); 
Run Code Online (Sandbox Code Playgroud)

不适合我.

调用

 Dispatcher.BeginInvoke(() => { tbNewText.Focus();});
Run Code Online (Sandbox Code Playgroud)

从Load事件起作用.


小智 10

谢谢Santiago Palladino Dispatcher完美地为我工作.我在做的是:

this.Focus(); 然后Dispatcher.BeginInvoke(()=> {tbNewText.Focus();});