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}”。