或者,更清楚地说,我如何格式化文本 block (在我的例子中,要包含在工具提示中),以便文本的某些部分来自绑定(bind)值。
在纯 C# 中我会使用:
_toolTip.Text = string.Format("{1:#0}% up, {2:#0}% down",
Environment.NewLine, percentageOne, percentage2);
但是,Text 属性的 WPF XAML 标记似乎只能包含一个绑定(bind)。花括号给了我很大的希望,但这是不可能的:
<Element>
<Element.Tooltip>
<!-- This won't compile -->
<TextBlock Text="{Binding Path=PercentageOne}% up, {Binding Path=PercentageTwo}% down"/>
</Element.Tooltip>
</Element>
我读到 Run.Text
属性不是依赖属性,因此不能绑定(bind)。
有没有办法可以在 XAML 中执行这种格式化?
最佳答案
您可以使用 MultiBinding + StringFormat(需要 WPF 3.5 SP1):
<TextBox.Text>
<MultiBinding StringFormat="{}{1:#0}% up, {2:#0}% down">
<Binding Path="PercentageOne" />
<Binding Path="PercentageTwo"/>
</MultiBinding>
</TextBox.Text>
关于 Run.Text - 您无法绑定(bind)到它,但有一些解决方法:
https://stackoverflow.com/questions/447035/