StringFormat和带标签的多重绑定

我想使用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'); 目标属性是“内容”(types“对象”)

有什么办法可以使这个代码工作?

你不能绑定这个,因为你试图将一个string绑定到一个不能工作的对象,因为StringFormat要求它的目标是一个stringtypes。 您可以通过使用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> 

对于那些想知道的你也可以留下来自<Label.Content> Burke的答案的<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}”。

Interesting Posts