Je voudrais 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>
Cependant, cela ne fonctionne pas et j'ai plutôt cette erreur:
MultiBinding a échoué car il n'a pas de convertisseur valide. MultiBindingExpression: l'élément cible est 'Label' (Name = 'myLabel'); la propriété cible est 'Content' (type 'Object')
Existe-t-il un moyen de faire fonctionner ce code?
Vous ne pouvez pas lier cela parce que vous essayez de lier une chaîne à un objet qui ne fonctionnera pas car StringFormat requiert que sa cible soit un type de chaîne. Vous pouvez contourner cela en utilisant un TextBlock à la place (qui a une propriété Text) ou en plaçant le Textblock en tant qu'enfant du Label:
<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>
Pour ceux qui se demandent, vous pouvez également laisser le <Label.Content>
tag de la réponse de Leom Burke. Cela enregistre deux autres lignes de code.
<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 par-dessus {0}".