Вопрос

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

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

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

Многобиндирование не удалось, потому что у него нет достоверного преобразователя. MultibindingExpression: целевой элемент - «метка» (name = 'mylabel'); Целевое свойство - это «контент» (тип «объект»)

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

Это было полезно?

Решение

Вы не можете связать это, потому что пытаетесь привязать строку с объектом, который не работает, потому что StringFormat требует, чтобы ее цель была типом строки. Вместо этого вы можете обойти это, используя текстовый блок (который имеет текстовое свойство) или поместив текстовый блок в качестве ребенка метки:

<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.Content> Тэг от ответа Леома Берка. Это сохраняет еще две строки кода.

<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>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top