.net - 什么是 String.Format 的 WPF XAML 数据绑定(bind)等效项?

或者,更清楚地说,我如何格式化文本 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)到它,但有一些解决方法:

  • http://fortes.com/2007/03/20/bindablerun/
  • http://paulstovell.net/blog/index.php/attached-bindablerun/

https://stackoverflow.com/questions/447035/

相关文章:

python - 格式化 timedelta 对象

github - 如何在 GitHub 上的 MD markdown 自述文件中添加空格?

c# - 我如何在 c# 中格式化 07/03/2012 到 2012 年 3 月 7 日

ruby - 如何将数字 1000 格式化为 "1 000"

eclipse - 制表符和空格转换

python - 如何在 Python/Pandas 中将变量设置为 "Today' s"date

asp.net - 格式化 DataBinder.Eval 数据

ruby-on-rails - 在 rails3 中禁用 :. 格式路由

html - 如何将 NUnit 输出转换为 HTML 报告

php - 当我将我的数字指定为 .000021 时,为什么 PHP 会以科学计数法打印我的数字?