这应该有一个简单的解决方案,但我似乎无法找到它。
我想做类似以下的事情,其中我有一个字符串格式的数据绑定。该字段是一个文本字段,我想用后缀显示它(但不会更改基础数据)。
<Label Name="field" Content="{Binding obj.field, StringFormat=\{0\} suffix}" />
所以我希望obj.field的值,例如“value”,显示为“值后缀”。
是否真的有必要使用ValueConverter(或其他)来做到这一点?我想如果有可能使用StringFormat构造,那么我就没有遇到过一些魔术格式选项。
这导致了一个相关的问题:我在哪里可以找到WPF StringFormat的参考?我可以找到c#String.Format格式化选项的参考,但这些并不都在WPF中起作用(就像我上面尝试过的那样)。
答案 0 :(得分:7)
StringFormat
,则 string
将起作用。但是,Label
的{{1}}属性的类型是object。这就是Content
没有效果的原因。如果您在StringFormat
内放置TextBlock
(或仅使用Label
)并绑定TextBlock
的{{1}}属性,则应该可以正常工作。< / p>
Textblock
如果您有其他理由想要将值绑定到Text
,您还可以执行以下操作。
<Label>
<TextBlock Text="{Binding obj.field, StringFormat=\{0\} suffix}" />
</Label>
相关问题:我无法想到为什么您可以提供给Label
的普通格式字符串不起作用的原因。它们都应该是标准字符串和自定义字符串。 Here是一个包含多个示例的页面。如果您发现任何不起作用,请提供示例。
答案 1 :(得分:0)
在这里找到一个很好的参考,不同的例子:http://blog.stevex.net/string-formatting-in-csharp/