Stringformat连接数据绑定和资源的值

时间:2012-08-07 18:38:32

标签: wpf binding concatenation string-formatting staticresource

我想在我的窗口标题中连接我的viewmodel中的属性和来自资源文件的值。 这就是我没有来自资源的字符串的工作:

Title="Binding Path=Description, StringFormat=Building: {0}}"

现在我想删除“Building”字符串并从我在其他地方使用的资源中输入一个值:

xmlns:res="clr-namespace:Project.View.Resources"
{res:Strings.TitleDescription}

我如何定义两者?我可以像{1}参数一样定义吗?

2 个答案:

答案 0 :(得分:16)

是的,你可以。只需使用MultiBinding

关于StringFormat的MSDN文章有一个例子。

在您的情况下,代码看起来像这样:

  <TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0} {1}">
        <Binding Source="{x:Static res:Strings.TitleDescription}"/>
        <Binding Path="Description"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>

答案 1 :(得分:13)

我现在已经在几个地方看到了MultiBinding的答案,而且几乎没有必要使用它。您可以将资源定义为字符串格式,只要只有一个字符串格式参数,就不需要MultiBinding。使代码更简洁:

<TextBlock Text="{Binding Description, StringFormat={x:Static res:Strings.TitleDesc}}" />

TitleDesc资源显然是"Building: {0}"