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

时间:2013-02-06 15:28:27

标签: c# xaml windows-runtime

在Windows 8中,当导航页面时,我需要将焦点放在特定的TextBox上。

我用过:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}

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

如何在加载页面时将焦点设置为TextBox?

4 个答案:

答案 0 :(得分:16)

尝试拨打myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);this.Dispatcher

代码示例:

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

答案 1 :(得分:1)

试试这个:

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

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

答案 2 :(得分:1)

在Windows Phone 8.1上向页面添加一个Loaded事件并在那里调用焦点而不是OnNavigatedTo事件

private void Page_Loaded(object sender, RoutedEventArgs e)
{
    SearchTextBox.Focus(FocusState.Keyboard);
}

答案 3 :(得分: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);
}