wpf - 如何在 WPF 中的 TextBlock 的句子中间插入绑定(bind)?

标签 wpf data-binding xaml

我正在寻找这些方面的东西:

<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 = 1AttemptCount = 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/

相关文章:

c# - 准备必须以某种方式交互在一起的松散耦合的 ViewModel 的良好实践是什么

c# - 错误 1904 - 模块 KinectAudio10.dll 注册失败

WPF 仅数字文本框 - 使用事件或命令处理它?

.net - 仅使用 XAML 在左键单击时显示上下文菜单

c# - 接受来自按钮的命令参数到 DelegateCommand

Silverlight自定义控件默认xmlns

c# - WPF,有条件地将项目绑定(bind)到详细 View

wpf - 我可以在不知道绑定(bind)本身的情况下更改 DataTrigger 中绑定(bind)的属性吗?

asp.net - 为什么不能在 ListView 中使用 <%=...%>

c# - 绑定(bind)ContentPresenter的内容