2010-05-16 7 views
0

Le contrôle TextBox de WPF (System.Windows.Controls.TextBox) apparaît pour mettre en surbrillance le texte sélectionné uniquement lorsqu'il a le focus. J'ai besoin de faire un TextBox continuer à montrer la sélection lorsque l'accent est perdu.WPF TextBox - ne pas masquer la sélection

Dans un contrôle Win32 EDIT standard, j'ai pu réaliser ceci avec ES_NOHIDESEL. Comment puis-je obtenir l'équivalent en WPF?

Répondre

2

Vous pouvez gérer l'événement LostFocus et définir l'argument d'événement sur e.Handled = true. De cette façon, le TextBox ne saura pas qu'il a perdu le focus et gardera votre sélection.

private void myTextCtrl_LostFocus(object sender, RoutedEventArgs e) 
    { 
     e.Handled = true; 
    } 

Cela vous donnera quelque chose de semblable à ce que vous recherchez, mais contrairement à la façon Win32, il affichera toujours votre sélection dans la couleur surligné au lieu de gris foncé.

Si vous voulez vraiment faire l'effort, vous pouvez également écrire XAML pour <TextBox.SelectionBrush>. Un autre moyen est d'utiliser FocusManager, vous pouvez lire environ this method here.