2016-11-21 3 views
1

Для приложения Windows Store в заявке указано: «Следите за TextBox при загрузке страницы и после взаимодействия пользователя с другими компонентами».Windows 8.1 Сфокусируйтесь на TextBox

Я решил проблему при загрузке страницы и когда пользователь взаимодействует с другими компонентами в одной и той же сетке (например, кнопки).

MyTextBox.LostFocus += (s,e)=> { 
    Dispatcher.RunAsync(
      CoreDispatcherPriority.Normal,() => SearchBox.Focus(FocusState.Programmatic)); 
} 

Проблема в том, что когда пользователь взаимодействует с компонентами в другом виде, например AppBar.

Возможно, я смогу решить проблему, сравнивая родительские представления и запуская Focus (FocusState.Programmatic), если они поступают из одного и того же представления.

Но ... как?

ответ

0

Основываясь на вашем описании, вы хотите сосредоточиться на TextBox. Я делаю простую демонстрацию, и вы можете сослаться на это.

XAML:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom"> 
    <TextBox x:Name="textbox1" Width="300" Height="50" HorizontalAlignment="Left" VerticalAlignment="Bottom"></TextBox> 
    </StackPanel> 
    <CommandBar> 
     <AppBarToggleButton Icon="Shuffle" Label="Shuffle" Click="AppBarButton_Click" /> 
     <AppBarToggleButton Icon="RepeatAll" Label="Repeat" Click="AppBarButton_Click"/> 
     <AppBarSeparator/> 
     <AppBarButton Icon="Back" Label="Back" Click="AppBarButton_Click"/> 
     <AppBarButton Icon="Stop" Label="Stop" Click="AppBarButton_Click"/> 
     <AppBarButton Icon="Play" Label="Play" Click="AppBarButton_Click"/> 
     <AppBarButton Icon="Forward" Label="Forward" Click="AppBarButton_Click"/> 
     <CommandBar.SecondaryCommands> 
      <AppBarButton Icon="Like" Label="Like" Click="AppBarButton_Click"/> 
      <AppBarButton Icon="Dislike" Label="Dislike" Click="AppBarButton_Click"/> 
     </CommandBar.SecondaryCommands> 
     <CommandBar.Content> 
      <TextBlock Text="Now playing..." Margin="12,14"/> 
     </CommandBar.Content> 
    </CommandBar> 
</Grid> 

Код За:

 public MainPage() 
    { 
     this.InitializeComponent(); 
     this.LayoutUpdated += MainPage_LayoutUpdated; 
    } 

    private void MainPage_LayoutUpdated(object sender, object e) 
    { 
     textbox1.Focus(Windows.UI.Xaml.FocusState.Programmatic); 
    } 

Я также найти one threads вы можете ссылаться.