Par exemple, Facebook a un texte d'indication «Rechercher» dans la zone de texte Rechercher lorsque la zone de texte est vide.
Comment y parvenir avec les zones de texte WPF?
.net
wpf
user-interface
textbox
Louis Rhys
la source
la source
Réponses:
Vous pouvez accomplir cela beaucoup plus facilement avec a
VisualBrush
et certains déclencheurs dans aStyle
:Pour augmenter la réutilisabilité de cela
Style
, vous pouvez également créer un ensemble de propriétés attachées pour contrôler le texte, la couleur, l'orientation, etc. de la bannière de repère.la source
C'est ma solution simple, adaptée de Microsoft ( https://code.msdn.microsoft.com/windowsapps/How-to-add-a-hint-text-to-ed66a3c6 )
la source
IsHitTestVisible="False"
qu'en est-il de l'utilisation de materialDesign HintAssist? J'utilise ceci et vous pouvez également ajouter un indice flottant:
J'ai installé Material Design avec Nuget Package il y a un guide d'installation dans le lien de documentation
la source
Faites-le dans le code-behind en définissant initialement la couleur du texte sur gris et en ajoutant des gestionnaires d'événements pour gagner et perdre le focus clavier.
Puis les gestionnaires d'événements:
la source
Vous devez créer un contrôle personnalisé en héritant de la zone de texte. Le lien ci-dessous présente un excellent exemple de l'exemple de zone de texte de recherche. Veuillez jeter un œil à ceci
http://davidowens.wordpress.com/2009/02/18/wpf-search-text-box/
la source
Vous pouvez le faire d'une manière très simple. L'idée est de placer une étiquette au même endroit que votre zone de texte. Votre étiquette sera visible si la zone de texte n'a pas de texte et n'a pas le focus.
Bonus: Si vous voulez avoir une valeur par défaut pour votre textBox, assurez-vous de la définir après la soumission des données (par exemple: "InputText" = "PlaceHolder Text Here" si vide).
la source
Une autre approche ;-)
cela fonctionne également avec
PasswordBox
. Si vous souhaitez l'utiliser avecTextBox
, échangez simplementPasswordChanged
avecTextChanged
.XAML:
CodeBehind:
la source
Une fois, je me suis retrouvé dans la même situation, je l'ai résolu de la manière suivante. J'ai seulement rempli les conditions d'une boîte d'indices, vous pouvez la rendre plus interactive en ajoutant des effets et d'autres choses sur d'autres événements comme la mise au point, etc.
CODE WPF (j'ai supprimé le style pour le rendre lisible)
Code C #
la source
Une autre solution consiste à utiliser une boîte à outils WPF comme MahApps.Metro. Il a de nombreuses fonctionnalités intéressantes, comme un filigrane de zone de texte:
Controls:TextBoxHelper.Watermark="Search..."
Voir http://mahapps.com/controls/textbox.html
la source
J'ai utilisé les événements de focus obtenu et perdu:
Cela fonctionne bien, mais le texte est toujours en gris. Besoin de nettoyage. J'utilisais VB.NET
la source
la source
C'est mon avis:
La plupart des autres réponses, y compris la première, ont des défauts à mon avis.
Cette solution fonctionne en toutes circonstances. Pure XAML, facilement réutilisable.
la source
Je réalise cela avec un
VisualBrush
et certains déclencheurs dans uneStyle
Suggérée par:sellmeadog
.@sellmeadog: Application en cours d'exécution, bt Design ne se chargeant pas ... l'erreur suivante vient: Référence de type ambiguë. Un type nommé «StaticExtension» apparaît dans au moins deux espaces de noms, «MS.Internal.Metadata.ExposedTypes.Xaml» et «System.Windows.Markup». Envisagez d'ajuster les attributs XmlnsDefinition de l'assembly. J'utilise .net 3.5
la source
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
à<Trigger Property="Text" Value="">
Pour WPF, il n'y a pas de moyen. Vous devez l'imiter. Voyez cet exemple . Une solution secondaire (floconneuse) consiste à héberger un contrôle utilisateur WinForms qui hérite de TextBox et à envoyer le message EM_SETCUEBANNER au contrôle d'édition. c'est à dire.
De plus, si vous souhaitez héberger une approche de contrôle WinForm, j'ai un framework qui inclut déjà cette implémentation appelée BitFlex Framework, que vous pouvez télécharger gratuitement ici .
Voici un article sur BitFlex si vous souhaitez plus d'informations. Vous commencerez à constater que si vous cherchez à avoir des contrôles de style Explorateur Windows, cela ne sort généralement jamais de la boîte, et parce que WPF ne fonctionne pas avec des poignées généralement, vous ne pouvez pas écrire un wrapper facile autour de Win32 ou un contrôle existant comme vous pouvez avec WinForms.
Capture d'écran:
la source