StringFormat и Multibinding с меткой - PullRequest
44 голосов
/ 09 декабря 2010

Я хотел бы использовать StringFormat, чтобы сделать что-то вроде этого:

<Label x:Name="myLabel">
    <Label.Content>
        <Multibinding StringFormat="{}{0} - {1}">
            <Binding Path="Lib1" />
            <Binding Path="Lib2" />
        </MultiBinding>
    </Label.Content>
</Label>

Однако, это не работает, и вместо этого я получил эту ошибку:

Ошибка MultiBindingу него нет действующего конвертера.MultiBindingExpression: целевым элементом является 'Label' (Name = 'myLabel');Свойство target - «Content» (тип «Object»)

Есть ли способ заставить этот код работать?

Ответы [ 3 ]

102 голосов
/ 09 декабря 2010

Вы не можете связать это, потому что вы пытаетесь связать строку с объектом, который не будет работать, потому что StringFormat требует, чтобы его цель была строковым типом. Вы можете обойти это, используя вместо этого TextBlock (который имеет свойство Text) или поместив Textblock как дочерний элемент 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>
3 голосов
/ 25 ноября 2016

Для тех, кому интересно, вы также можете оставить тег <Label.Content> из ответа Леома Бёрка. Это сохраняет еще две строки кода.

<Label x:Name="myLabel">
    <TextBlock>
        <TextBlock.Text>
           <MultiBinding StringFormat="{}{0} - {1}">
               <Binding Path="Lib1" />
               <Binding Path="Lib2" />
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</Label>
1 голос
/ 10 февраля 2017
<Label>
   <AccessText>
      <MultiBinding StringFormat="{x:Static properties:Resources.MyText}">
         <Binding Path="MyObj.MyProp" Mode="OneTime"/>
      </MultiBinding>
   </AccessText>
</Label>

Где Resources.MyText может содержать что-нибудь вроде "Fox перепрыгивает через {0}".

...