【问题标题】:StringFormat and Multibinding with LabelStringFormat 和带标签的多重绑定
【发布时间】:2011-05-22 21:36:56
【问题描述】:

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

有什么方法可以让这段代码工作吗?

【问题讨论】:

    标签: c# xaml multibinding string-formatting


    【解决方案1】:

    您无法绑定它,因为您试图将字符串绑定到无法工作的对象,因为 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>
    

    【讨论】:

    • 这正是我要说的,这篇文章也证实了这一点:social.msdn.microsoft.com/Forums/en-US/wpf/thread/…
    • 谢谢,我将使用 TextBlock 而不是 Label。第一个解决方案也可以,但我认为第二个更优雅。
    • +1 后一种解决方案还继承了标签的样式,如果您懒得为TextBlock设置样式,这是一个小小的好处。
    【解决方案2】:

    对于那些想知道的人,您还可以在 Leom Burke 的回答中留下&lt;Label.Content&gt; 标签。这又节省了两行代码。

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

    【讨论】:

      【解决方案3】:
      <Label>
         <AccessText>
            <MultiBinding StringFormat="{x:Static properties:Resources.MyText}">
               <Binding Path="MyObj.MyProp" Mode="OneTime"/>
            </MultiBinding>
         </AccessText>
      </Label>
      

      Resources.MyText 可以容纳诸如“狐狸跳过 {0}”之类的内容。

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 2013-09-02
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        • 2011-08-17
        相关资源
        最近更新 更多