【问题标题】:How do I properly add a prefix (or suffix) to databinding in XAML?如何在 XAML 中为数据绑定正确添加前缀(或后缀)?
【发布时间】:2010-11-05 07:08:44
【问题描述】:

如何对单个 TextBlock 进行数据绑定以说“嗨,耶利米”?

<TextBlock Text="Hi, {Binding Name, Mode=OneWay}"/>

寻找优雅的解决方案。外面有什么?我试图避免为每个前缀/后缀组合编写转换器。

【问题讨论】:

  • 看起来您接受的答案可能只是 WPF - 您可能会删除 Silverlight 标记。

标签: c# wpf xaml data-binding


【解决方案1】:

如果您只需要插入一个值,则可以使用 Binding 的 StringFormat 属性。请注意,这需要 .NET 3.5 SP1(或 .NET 3.0 SP2),因此只有在您的生产环境拥有最新的服务包时才能使用它。

<TextBlock Text="{Binding Name, Mode=OneWay, StringFormat='Hi, {0}'}"/>

如果你想插入两个或多个不同的绑定值,我通常只是制作一个包含多个 TextBlock 的 Orientation="Horizo​​ntal" 的 StackPanel,例如:

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Good "/>
    <TextBlock Text="{Binding TimeOfDay}"/>
    <TextBlock Text=", "/>
    <TextBlock Text="{Binding Name}"/>
    <TextBlock Text="!"/>
</StackPanel>

【讨论】:

  • 确保您已经安装了 3.5SP1 才能使用它。
  • @rmoore:很好。我已经编辑了我的答案以使其脱颖而出。
  • 对于多个绑定,您还可以在 MultiBinding 中使用 StringFormat。 文本>
  • 天哪……早点知道 StringFormat 会很棒。
  • 如果您因为忘记而一次又一次地扯掉头发,这对 元素不起作用。标签是不同的动物,绑定不一样。更多信息请看这里:stackoverflow.com/questions/4206612/…
【解决方案2】:

@Joe White 解决方案的更正(次要)

<TextBlock Text="{Binding Name, Mode OneWay, StringFormat='Hi {0}}'"/>

需要单引号才能成功应用字符串格式
为我工作:)

【讨论】:

    【解决方案3】:

    我认为应该这样做。

    <TextBlock>
        <TextBlock Text="Hi, " />
        <TextBlock Text="{Binding Name, Mode=OneWay}" />
    </TextBlock>
    

    【讨论】:

    • Joe White 的 StringFormat 解决方案可能是要走的路。我忘记了。
    • 格雷格,我想你打错了。您包含的 TextBlock 应该是 StackPanel,Orientation="Horizo​​ntal"。不过,你为我解决了一个问题。谢谢。
    猜你喜欢
    • 2016-03-07
    • 2018-11-01
    • 1970-01-01
    • 2018-03-03
    • 2015-12-05
    • 2018-11-10
    • 2017-12-07
    相关资源
    最近更新 更多