StringFormat et Multibinding avec étiquette
J'aimerais utiliser StringFormat pour faire quelque chose comme ceci :
<Label x:Name="myLabel">
<Label.Content>
<Multibinding StringFormat="{}{0} - {1}">
<Binding Path="Lib1" />
<Binding Path="Lib2" />
</MultiBinding>
</Label.Content>
</Label>
Toutefois, il ne fonctionne pas et j'ai eu cette erreur :
MultiBinding a échoué parce qu'il n'a pas de convertisseur valide. MultiBindingExpression: l'élément cible est 'Label' (Nom='myLabel'); la propriété cible est 'Content' (type 'Object')
y a-t-il un moyen de faire fonctionner ce code ?
3 réponses
Vous ne pouvez pas lier ceci parce que vous essayez de lier une chaîne à un objet qui ne fonctionnera pas parce que StringFormat exige que sa cible soit un type de chaîne. Vous pouvez contourner cela en utilisant un texte à la place (qui a une propriété texte) ou en mettant le texte comme l'enfant de L'étiquette:
<Label x:Name="myLabel">
<Label.Content>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Lib1" />
<Binding Path="Lib2" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Label.Content>
</Label>
<Label x:Name="myLabel">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Lib1" />
<Binding Path="Lib2" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Label>
<Label>
<AccessText>
<MultiBinding StringFormat="{x:Static properties:Resources.MyText}">
<Binding Path="MyObj.MyProp" Mode="OneTime"/>
</MultiBinding>
</AccessText>
</Label>
Où Resources.MyText
peut contenir n'importe quoi comme "Fox saute sur {0}."