【发布时间】:2013-06-02 12:07:06
【问题描述】:
在这种情况下,我希望使用资源字典中声明的字符串作为Text 属性绑定的一部分。仅绑定单个动态资源字符串不是问题:
<TextBlock Text="{DynamicResource keyToMyString}" />
但是如果您需要在MultiBinding 上使用StringFormat,您很快就会遇到问题,因为您需要插入动态文本或想要组合多个字符串。例如,如果我的 MultiBinding 如下所示:
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1} some more text">
<Binding Source="{x:Static Resources:Strings.string1}" />
<Binding Source="{x:Static Resources:Strings.string2}" />
</MultiBinding>
<TextBlock.Text>
我可以将指定资源文件中的string1 和string2 注入到绑定文本中,没有问题。但是我找不到以相同方式使用动态资源中的字符串的方法。 (我正在使用这种方法将公司和产品名称注入到合并资源字典中的文本中)。
使用TextBlock,我可以通过对TextBlock 内容使用多个Run 项目(reference) 来规避这个问题:
<TextBlock >
<Run Text="{DynamicResource CompanyName}" />
<Run Text="{DynamicResource ProductName}" />
<Run Text="{DynamicResource MajorVersion}" />
</TextBlock>
但是当需要将动态资源绑定到Window Title 属性时,这无济于事。有没有办法通过(创造性的,如有必要)使用现有的标记扩展(如x:Static等)来实现这一点?还是我们必须编写自己的标记扩展来实现这一点?
【问题讨论】:
-
请注意:虽然建议的两个重复项本身都很有趣,但应将它们视为略微相关而不是重复项。
标签: wpf multibinding markup-extensions dynamicresource