61 votes

Texte sur une barre de progression dans WPF

Cela peut être une évidence pour WPF connaisseurs, mais je voudrais savoir si il existe un moyen simple de mettre le texte sur le WPF ProgressBar. Pour moi, un vide de la barre de progression est nu. C'est l'écran de l'immobilier qui pourrait porter un message au sujet de ce qui est en cours ou même juste d'ajouter des numéros à la représentation. Maintenant, WPF est tout au sujet de conteneurs et les extensions et je suis lentement habillage de mon esprit autour de cela, mais depuis que je ne vois pas d'un "Texte" ou "Contenu" de la propriété, je pense que je vais devoir ajouter quelque chose pour le conteneur qui est ma barre de progression. Est-il une technique ou deux là-bas qui est plus naturel que mon original WinForms impulsions être? Quel est le meilleur, le plus WPF-moyen naturel pour ajouter du texte pour que la barre de progression?

68voto

SmartyP Points 610

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

   <Grid Width="300" Height="50">  
    <ProgressBar Value="50" />
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
      My Text
    </TextBlock>
  </Grid>
 

gardez simplement à l’esprit que l’index-z est tel que le dernier élément de la liste sera sur le dessus .. également, si vous n’avez pas encore kaxaml, assurez-vous de le récupérer - c’est bien pour jouer avec XAML lorsque vous essayez le comprendre.

30voto

Abe Heidebrecht Points 16417

Si vous avez besoin d'avoir une réutilisables méthode d'ajout de texte, vous pouvez créer un nouveau Style/ControlTemplate qui a une TextBlock pour afficher le texte. Vous pouvez détourner le TextSearch.Texte de la propriété attachée à définir le texte sur une barre de progression.

Si elle n'a pas besoin d'être réutilisable, il suffit de mettre la barre de progression dans la Grille, et ajouter un TextBlock à la grille. Depuis WPF peut composer des éléments de l'ensemble, cela fonctionne bien.

Si vous le souhaitez, vous pouvez créer un UserControl qui expose la ProgressBar et TextBlock comme des propriétés publiques, il serait donc moins de travail que d'en créer un personnalisé ControlTemplate.

6voto

Bob Wintemberg Points 1347

Vous pouvez utiliser un Décorateur pour l'affichage du texte sur le haut du tableau.

Consultez l'article MSDN sur les Ornements de

Vous devez créer une classe qui hérite de la classe Adorner. Remplacer le OnRender méthode pour dessiner le texte que vous souhaitez. Si vous le souhaitez, vous pouvez créer une propriété de dépendance pour la réalisation de votre Ornement qui contient le texte que vous souhaitez afficher. Ensuite, utilisez l'exemple dans le lien que j'ai mentionné pour ajouter cet Ornement à votre barre de progression de l'ornement de la couche.

2voto

Rohit Kandhal Points 1285

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