57

StringFormatを使用して次のようなことをしたいと思います:

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

ただし、それは機能せず、代わりにこのエラーが発生しました:

有効なコンバーターがないため、マルチバインディングが失敗しました。MultiBindingExpression:target要素は'Label'(Name ='myLabel');です。ターゲットプロパティは「コンテンツ」(タイプ「オブジェクト」)です

このコードを機能させる方法はありますか?

4

3 に答える 3

120

StringFormatはターゲットが文字列型である必要があるため、機能しないオブジェクトに文字列をバインドしようとしているため、これをバインドすることはできません。これを回避するには、代わりにTextBlock(Textプロパティがあります)を使用するか、Textblockをラベルの子として配置します。

<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>
于 2010-12-09T14:28:20.317 に答える
7

<Label.Content>疑問に思っている人のために、LeomBurkeの答えからタグを残すこともできます。これにより、さらに2行のコードが節約されます。

<Label x:Name="myLabel">
    <TextBlock>
        <TextBlock.Text>
           <MultiBinding StringFormat="{}{0} - {1}">
               <Binding Path="Lib1" />
               <Binding Path="Lib2" />
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</Label>
于 2016-11-24T22:35:20.460 に答える
5
<Label>
   <AccessText>
      <MultiBinding StringFormat="{x:Static properties:Resources.MyText}">
         <Binding Path="MyObj.MyProp" Mode="OneTime"/>
      </MultiBinding>
   </AccessText>
</Label>

Resources.MyText「Foxjumpsover{0}」のようなものをどこに置くことができますか。

于 2017-02-10T13:28:48.420 に答える