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 ?

42
demandé sur Filimindji 2010-12-09 17:18:14

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>
98
répondu Leom Burke 2010-12-09 14:28:20
<Label.Content> tag de la réponse de Leom Burke. Ceci sauve encore deux 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>
3
répondu Martijn 2016-11-24 22:35:20
<Label>
   <AccessText>
      <MultiBinding StringFormat="{x:Static properties:Resources.MyText}">
         <Binding Path="MyObj.MyProp" Mode="OneTime"/>
      </MultiBinding>
   </AccessText>
</Label>

Resources.MyText peut contenir n'importe quoi comme "Fox saute sur {0}."

0
répondu RoadVampire 2017-02-10 13:28:48