2016-11-21 3 views
1

Für eine Windows Store App lautet eine Anforderung: "Behalten Sie den Fokus auf einem TextBox, wenn die Seite geladen ist und nachdem Benutzer mit anderen Komponenten interagieren".Windows 8.1 Konzentrieren Sie sich auf TextBox

Ich löste das Problem, wenn die Seite geladen wird und wenn der Benutzer mit anderen Komponenten im gleichen Grid (d. H. Schaltflächen) interagieren.

Das Problem ist, wenn der Benutzer mit Komponenten in anderer Ansicht interagieren, wie der AppBar.

Vielleicht kann ich das Problem lösen, indem ich die Elternansichten vergleiche und den Focus (FocusState.Programmatic) ausführe, wenn sie aus derselben Sicht kommen.

Aber ... wie?

Antwort

0

Basierend auf Ihrer Beschreibung möchten Sie sich auf TextBox konzentrieren. Ich mache eine einfache Demo und Sie können sich darauf beziehen.

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> 

-Code Behind:

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

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

Ich finde one threads können Sie auch beziehen.

Verwandte Themen