WPF字符串格式化不是针对数字或日期

4
这应该有一个简单的解决方案,但我似乎找不到它。
我想做如下操作,其中我与字符串格式进行数据绑定。该字段是文本字段,我想用后缀显示它(但不更改基础数据)。
<Label Name="field" Content="{Binding obj.field, StringFormat=\{0\} suffix}" />

我希望obj.field的值,例如"value",显示为"value suffix"。

需要使用ValueConverter(或类似的东西)吗? 我认为如果可以使用StringFormat构造实现,那么就有一些神奇的格式选项我还没有遇到。

这引出了一个相关问题:我在哪里可以找到WPF StringFormat的参考文献? 我可以找到c# String.Format格式选项的参考文献,但这些并不都适用于WPF(就像我上面尝试的那样)。


有关问题的任何答案吗? - Klay
我在重新编写我的答案时,可能不小心删除了与问题相关的评论。我刚刚更新了。 - Joel B Fant
2个回答

7

StringFormat 只能在目标类型为 string 的情况下工作。但是,LabelContent 属性的类型是 object。这就是为什么 StringFormat 没有效果的原因。如果你在 Label 中放置一个 TextBlock(或只使用一个 TextBlock)并绑定 TextblockText 属性,它应该可以正常工作。

<Label>
    <TextBlock Text="{Binding obj.field, StringFormat=\{0\} suffix}" />
</Label>

如果您有其他原因想要将值绑定到 Label,您也可以按照以下步骤操作。
<Label DataContext="{Binding obj.field}">
    <TextBlock Text="{Binding ., StringFormat=\{0\} suffix}" />
</Label>

相关问题:我想不出为什么可以提供给string.Format()的普通格式字符串不起作用的原因。它们都应该起作用,包括标准和自定义字符串。这里是一个有多个示例的页面。点击此处。如果您发现任何不起作用的,请提供示例。


1
谢谢。我意识到标签不是“轻量级”TextBlock,就像我想象的那样,而是完全不同的东西。感谢您的回复。 - Klay

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接