14

我想在我的窗口标题中连接我的视图模型中的一个属性和一个来自资源文件的值。这就是我在没有来自资源的字符串的情况下所做的工作:

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

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

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

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

4

2 回答 2

24

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

MSDN 上的文章StringFormat有一个例子。

在您的情况下,代码将如下所示:

  <TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0} {1}">
        <Binding Source="{x:Static res:Strings.TitleDescription}"/>
        <Binding Path="Description"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
于 2012-08-07T18:41:05.960 回答
23

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

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

而且TitleDesc资源很明显"Building: {0}"

于 2015-12-01T14:06:27.460 回答