61 votes

StringFormat et Multibinding avec Label

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 cette erreur à la place:

La liaison multiple a échoué car il n’a pas de convertisseur valide. MultiBindingExpression: l'élément cible est 'Label' (Name = 'myLabel'); propriété cible est 'Content' (type 'Object')

Existe-t-il un moyen de faire fonctionner ce code?

125voto

Leom Burke Points 4414

Vous ne pouvez pas lier ceci parce que vous essayez de lier une chaîne à un objet qui ne fonctionnera pas car StringFormat exige que sa cible soit un type chaîne. Vous pouvez contourner ce problème en utilisant à la place un TextBlock (qui possède une propriété Text) ou en plaçant le Textblock en tant qu'enfant de 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>
 

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