0 votes

WPF Usercontrol avec boîtes de texte

J'ai un contrôle utilisateur WPF avec un certain nombre de boîtes de texte, qui est hébergé dans une fenêtre WPF. Les zones de texte ne sont pas liées actuellement, mais je ne peux taper dans aucune d'entre elles.

J'ai placé un point d'arrêt dans l'événement KeyDown de l'une des zones de texte et il est bien exécuté et je peux voir la touche sur laquelle j'ai appuyé.

Les zones de texte sont déclarées comme

<TextBox Grid.Row="3" Grid.Column="4" x:Name="PostcodeSearch" Style="{StaticResource SearchTextBox}" KeyDown="PostcodeSearch_KeyDown"/>

Le style est mis en œuvre sous la forme

<Style x:Key="SearchTextBox" TargetType="{x:Type TextBox}"> <Setter Property="Control.Margin" Value="2"/> <Setter Property="Height" Value="20"/> <Setter Property="Width" Value="140"/> <Setter Property="HorizontalAlignment" Value="Left"/> </Style>

J'espère que j'ai oublié quelque chose d'évident.

EDIT : Je n'ai ajouté les événements KeyDown et KeyUp que pour prouver que les pressions sur les touches étaient bien transmises. Je n'ai aucune fonctionnalité personnalisée.

1voto

Simon D. Points 2430

Si la méthode PostcodeSearch_KeyDown (ou toute autre méthode précédant la boîte de texte dans la chaîne d'événements, qui peut également être un contrôle parent dans l'événement Preview_KeyDown) active le paramètre e.Handled = true (e étant l'eventArgs), l'événement ne sera pas propagé à d'autres consommateurs (comme la boîte de texte) et aucune action ne se produira.

Une autre raison peut être que votre WPF-Window est hébergée dans une application WinForms, vous devrez alors appeler

ElementHost.EnableModelessKeyboardInterop(YourWindow);

Pour faire fonctionner l'interaction avec le clavier (google/bing pour WPF WinForms InterOp pour une explication complète)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X