如何在OnNavigatedTo事件中将焦点放到TextBox上?

4
在Windows 8中,当导航到某个页面时,我需要将焦点放在特定的文本框中。
我使用了以下代码:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}

但它不起作用。然而,如果我从按钮单击事件调用myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);,它就可以正常工作。

当页面加载时,如何将焦点设置到文本框?

4个回答

16

尝试使用this.Dispatcher调用myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);

示例代码:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    Dispatcher.RunAsync(
        CoreDispatcherPriority.Normal,
        () => myControl.Focus(FocusState.Keyboard));
}

3
对于我来说,在Windows 8.1上通过添加加载事件,myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard)可以正常工作。 - bhupinder

1

试试这个:

myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);

并将这个控件(mycontrol)设置为您XAML代码中的第一个控件。


2
欢迎来到stackoverflow。请参加此次导览,了解该网站的运作方式和用途。请考虑格式化您的答案。 - Devraj Gadhavi

1
在Windows Phone 8.1中,向页面添加一个Loaded事件,并在其中调用焦点,而不是在OnNavigatedTo事件中。
private void Page_Loaded(object sender, RoutedEventArgs e)
{
    SearchTextBox.Focus(FocusState.Keyboard);
}

0
我是通过在 TextBox 的 Loaded 事件中添加它来实现的:
xaml:
<TextBox x:Name="SearchTextBox" 
     Loaded="SearchTextBox_Loaded"/>

在代码后端 .cs 文件中:

private void SearchTextBox_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    SearchTextBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接