我正在寻找类似以下的东西:
<TextBlock
Grid.Column="1"
Text="Welcome, {Binding UserName}!" />
当然,这实际上会向用户显示文本"{Binding UserName}"而不是解码它,但我知道你可以在ASP.NET中做到这一点,所以我希望有办法在WPF中使其工作。
我已经意识到我可以使用IValueConverter
...如果可能的话,我正在寻找纯粹在标记中完成的方法。
编辑:
基于@Matt Hamilton的最佳解决方案,我尝试将两个值绑定到相同的TextBlock
中,使用了MultiBinding
。非常完美地解决了问题:
<TextBlock
Style="{StaticResource TextBlock_ValueStyle}"
Grid.Column="1">
<TextBlock.Text>
<MultiBinding
StringFormat="{}Attempts: {0:G} of {1:G}">
<Binding
Path="AttemptNumber" />
<Binding
Path="AttemptCount" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
这将产生:尝试次数:1/4
(假设AttemptNumber = 1
,AttemptCount = 4
)。
我还发现了这个链接对于确定在冒号后放置哪些格式很有帮助:
StringFormat
的开头使用了{}
。在你的原始示例中,你使用了\{
和\}
。然后你在第二个示例中根本不需要转义。此外,直到我添加:G
(“通用”格式)之前,它才拒绝我的整数绑定。除了这些怪异之处,StringFormat
有了一个新的粉丝。 - devuxer