如何在 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="Horizontal" 的 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。@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="Horizontal"。不过,你为我解决了一个问题。谢谢。以上是关于如何在 XAML 中为数据绑定正确添加前缀(或后缀)?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中为 IEnumerable<string> 的每个成员添加前缀/后缀
将前缀/后缀添加到数据框名称或将“参数”传递给 python 中的数据框名称