2012-08-19 4 views
1

Ma fenêtre principale dispose d'un contrôle de contenu dans lequel je charge un contrôle utilisateur. Je ne peux pas voir pour mettre l'accent sur une zone de texte dans le contrôle utilisateur. J'ai essayé plusieurs méthodes suggérées comme et Keyboard.Focus() et FocusManager.SetFocusedElement() mais elles ne semblent pas fonctionner.Impossible de définir le focus sur une zone de texte

Je ne suis pas lié à cette façon de charger le contrôle de l'utilisateur s'il y a une meilleure façon. Il me semble qu'il me manque quelque chose de fondamental en ce qui concerne le focus ou le ContentControl alors j'ai pensé que je demanderais aux experts au lieu de continuer à tirer sur le problème.

Des idées?

MainWindow.xaml:

<Grid> 
    <ContentControl Name="NavFrame"/> 
</Grid> 

MainWindow.xaml.cs:

protected override void OnInitialized(EventArgs e) 
{ 
    this.NavFrame.Content = new UserControl1(); 
    base.OnInitialized(e); 
} 

UserControl1.xaml:

<Grid> 
    <TextBox Height="23" HorizontalAlignment="Left" Margin="93,79,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" /> 
</Grid> 

UserControl1.xaml.cs:

protected override void OnInitialized(EventArgs e) 
{ 
    textBox1.Focus(); 
    // FocusManager.SetFocusedElement(this, textBox1); 
    // Keyboard.Focus(textBox1); 
    base.OnInitialized(e); 
} 

Répondre

1

Si vous placez le dans l'événement chargé pour le contrôle utilisateur plutôt que OnInitialized, il semble fonctionner correctement.

<UserControl ... 
    Loaded="UserControl_Loaded"> 
    <Grid> 
     <TextBox Name="textBox1" /> 
    </Grid> 
</UserControl> 

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
{ 
    textBox1.Focus(); 
} 

Quelque chose d'aussi simple que cela fonctionne aussi bien, si vous voulez donner le focus sur les temps autres que OnLoad ...

UserControl1.xaml.cs:

MainWindow.xaml.cs:

UserControl1 ctrl = new UserControl1(); 
ContentControl1.Content = ctrl; 
ctrl.FireTextBoxFocus(); 
+0

@tzerb J'ai édité ma réponse avec une autre solution facile que j'ai réellement testée cette fois =). –

+0

A travaillé, merci. – tzerb

Questions connexes