2010-10-19 4 views
22

J'ai lié l'info-bulle d'un contrôle de curseur à sa propriété Value et j'essaie d'utiliser StringFormat pour l'afficher "Current Value {0} of 10" où { 0} est la propriété Value. Voici une des différentes choses que j'ai essayées en essayant de comprendre cela. Je rencontre des problèmes pour trouver des exemples en ligne sur la façon d'utiliser un format de chaîne avec des littéraux de chaîne tels que le mien ci-dessus. Je vois beaucoup de conversion de formats de date/heure/devise. Je pense que j'ai un moyen de le faire avec une multi-liaison, mais cela semble juste une quantité de travail supplémentaire que nécessaire. J'espère que pour la mise en forme littérale de chaîne je n'ai toujours pas besoin d'écrire un convertisseur personnalisé.wpf - binding stringformat sur l'étiquette en utilisant la chaîne littérale

Dans mon application, je me retrouve à utiliser beaucoup d'étiquettes supplémentaires à côté des éléments. Par conséquent, une bonne compréhension du format de chaîne devrait me permettre d'éliminer certaines de ces étiquettes inutiles.

Répondre

32

Pour l'info-bulle, vous pouvez consulter WPF binding with StringFormat doesn't work on ToolTips.

En ce qui concerne le StringFormat que vous avez spécifié ci-dessus, vous devez échapper votre chaîne.

StringFormat="{}Current Value {0} of 10" 

Voici un certain nombre d'exemples de StringFormat. http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

+1

Je ne peux toujours pas la liaison à travailler sur la propriété de la valeur de mon curseur mais cela fonctionne quand je lie l'info-bulle à la variable à laquelle le curseur est lié. Peut-être que la valeur n'est pas une propriété de curseur lisible ..hmm – TWood

94

Label.Content est l'objet de sorte que vous ne pouvez pas utiliser Binding.StringFormat là comme le type de cible de fixation doit être string pour que cela fonctionne. Deux solutions possibles: utilisez TextBlock au lieu de Label et liez la propriété Text.

Utilisez Label.ContentStringFormat-à-dire

<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} /> 

Vous avez seulement besoin d'échapper à la string avec {} si votre premier caractère est un {

+0

Les dates peuvent être formatées ici comme suit: "Date de début: {0: jj-MM-aaaa}" –