在这种情况下,我希望使用在资源字典中声明的字符串作为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项目来规避此问题:
<TextBlock >
<Run Text="{DynamicResource CompanyName}" />
<Run Text="{DynamicResource ProductName}" />
<Run Text="{DynamicResource MajorVersion}" />
</TextBlock>
但这在需要将动态资源绑定到Window Title属性时无济于事。有没有办法通过(创造性的,如有必要)使用现有的标记扩展(如x:Static
等)来实现这一点?还是我们必须编写自己的标记扩展来实现这一点?