Texte sur une barre de progression dans WPF

Cela peut être une évidence pour le cognoscenti WPF, mais j’aimerais savoir s’il existe un moyen simple de mettre du texte sur la barre de progression WPF. Pour moi, une barre de progression vide semble nue. C’est l’écran de l’immobilier qui pourrait porter un message sur ce qui est en cours, ou même simplement append des chiffres à la représentation. Maintenant, WPF est tout au sujet des conteneurs et des extensions et je me concentre lentement là-dessus, mais comme je ne vois pas de propriété “Texte” ou “Contenu”, je pense que je vais devoir append quelque chose au conteneur qui est ma barre de progression. Y a-t-il une technique ou deux là-bas qui est plus naturelle que ce que mes impulsions WinForms d’origine seront? Quelle est la meilleure façon d’append du texte à cette barre de progression?

Si vous avez besoin d’une méthode réutilisable pour l’ajout de texte, vous pouvez créer un nouveau style / controltemplate contenant un TextBlock supplémentaire pour afficher le texte. Vous pouvez détourner la propriété attachée TextSearch.Text pour définir le texte sur une barre de progression.

S’il n’a pas besoin d’être réutilisable, placez simplement la barre de progression dans une grid et ajoutez un TextBlock à la grid. Puisque WPF peut composer des éléments ensemble, cela fonctionnera parfaitement.

Si vous le souhaitez, vous pouvez créer un UserControl qui expose les propriétés ProgressBar et TextBlock en tant que propriétés publiques. Il serait donc plus simple de créer un ControlTemplate personnalisé.

Les deux réponses précédentes (créer un nouveau CustomControl ou un Adorner ) sont de meilleures pratiques, mais si vous voulez simplement être rapide et sale (ou comprendre visuellement comment le faire), alors ce code fonctionnerait:

    My Text   

Gardez à l’esprit que le z-index est tel que le dernier élément listé sera en haut.

De plus, si vous ne possédez pas encore Kaxaml , assurez-vous de le récupérer – il est idéal pour jouer avec XAML lorsque vous essayez de comprendre les choses.

Cela peut être très simple (à moins qu’il y ait beaucoup de moyens pour que cela fonctionne).

Vous pouvez utiliser Style pour le faire ou superposer un TextBlock et un ProgressBar .

Je l’utilise personnellement pour montrer le pourcentage d’avancement en attente de l’achèvement.

Pour que ce soit très simple, je voulais seulement avoir une seule Binding , alors j’ai attaché le TextBock.Text à ProgressBar.Value .

Ensuite, copiez le code pour le faire.

     

Voici comment cela pourrait ressembler:

entrer la description de l'image ici

Consultez le tutoriel WPF pour le post complet.

Vous pouvez utiliser un Adorner pour afficher du texte par-dessus.

Voir l’ article MSDN sur Adorners

Vous créez une classe qui hérite de la classe Adorner. Remplacez la méthode OnRender pour dessiner le texte souhaité. Si vous le souhaitez, vous pouvez créer une propriété de dépendance pour votre Adorner personnalisé contenant le texte que vous souhaitez afficher. Utilisez ensuite l’exemple du lien que j’ai mentionné pour append cet Adorner à la couche adorner de votre barre de progression.

Cliquez avec le bouton droit sur ProgressBar , puis cliquez sur Modifier le modèle> Modifier une copie.

TextBlock ensuite le TextBlock comme indiqué ci-dessous, juste au-dessus de la balise de fermeture de la Grid dans le style généré par VS.