我正在寻找这些方面的东西:
<TextBlock
Grid.Column="1"
Text="Welcome, {Binding UserName}!" />
这当然会实际向用户显示文本“{Binding UserName}”而不是对其进行解码,但我知道你可以用 ASP.NET 做这样的事情,所以我希望有一种方法可以让它工作WPF。
我已经知道我可以使用
IValueConverter
...如果可能的话,我正在寻找我可以纯粹在标记中做的事情。编辑:
基于@Matt Hamilton 最优秀的解决方案,我尝试突破极限并将两个值绑定(bind)到同一个
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>
这会产生:
Attempts: 1 of 4
(假设 AttemptNumber = 1
和 AttemptCount = 4
)。我还发现此链接有助于确定在冒号后放置哪些格式:
http://msdn.microsoft.com/en-us/library/fbxft59x.aspx
最佳答案
您可以在 .NET 3.5 SP1 中使用 StringFormat 绑定(bind)属性:
<TextBlock Text="{Binding UserName,StringFormat='Welcome, \{0\}!'}" />
请注意,您需要使用反斜杠转义字符串格式的花括号。
更新 是的,还支持多个值:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Welcome, {0} {1}!">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
关于wpf - 如何在 WPF 中的 TextBlock 的句子中间插入绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402573/