如何在 XAML 中为数据绑定正确添加前缀(或后缀)?

Posted

技术标签:

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

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

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

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

【问题讨论】:

看起来您接受的答案可能只是 WPF - 您可能会删除 Silverlight 标记。 【参考方案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 会很棒。 如果您因为忘记而一次又一次地扯掉头发,这对 元素不起作用。标签是不同的动物,绑定不一样。更多信息请看这里:***.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"。不过,你为我解决了一个问题。谢谢。

以上是关于如何在 XAML 中为数据绑定正确添加前缀(或后缀)?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中为 IEnumerable<string> 的每个成员添加前缀/后缀

将前缀/后缀添加到数据框名称或将“参数”传递给 python 中的数据框名称

在 nifi tailFile 处理器中添加前缀或后缀

如何 批量 给 某个文件夹 里面 的几十个文件的名字加入个前缀或后缀

最长正确前缀/后缀算法为啥/如何工作?

如何通过XAML,WPF中的数据绑定设置VisualState INITIALIZATION