Wpf 在多重绑定中是否可以使用DynamicSource?
在本例中,我希望使用资源字典中声明的字符串作为Wpf 在多重绑定中是否可以使用DynamicSource?,wpf,multibinding,markup-extensions,dynamicresource,Wpf,Multibinding,Markup Extensions,Dynamicresource,在本例中,我希望使用资源字典中声明的字符串作为Text属性绑定的一部分。仅绑定单个动态资源字符串不是问题: <TextBlock Text="{DynamicResource keyToMyString}" /> 但是,当需要将动态资源绑定到属性时,这没有帮助。是否可以通过(创造性地,如果必要的话)使用现有的标记扩展(如x:Static等)来实现这一点?或者我们必须编写自己的标记扩展才能实现这一点 动态资源引用有一些明显的限制。必须至少满足以下条件之一: 正在设置的属性必须是Fr
Text
属性绑定的一部分。仅绑定单个动态资源字符串不是问题:
<TextBlock Text="{DynamicResource keyToMyString}" />
但是,当需要将动态资源绑定到属性时,这没有帮助。是否可以通过(创造性地,如果必要的话)使用现有的标记扩展(如x:Static
等)来实现这一点?或者我们必须编写自己的标记扩展才能实现这一点
动态资源引用有一些明显的限制。必须至少满足以下条件之一:
- 正在设置的属性必须是
或FrameworkElement
上的属性。该属性必须由FrameworkContentElement
支持DependencyProperty
- 该参考用于
样式
中的值设置器
- 要设置的属性必须是
上的属性,该属性作为Freezable
或FrameworkElement
属性或FrameworkContentElement
值提供Setter
绑定
,所有语句都会被违反
如图所示,DynamicResourceExtension
对于Run
类的一个实例工作得很好,因为Run
类(至少)是从FrameworkContentElement
类派生的
其他参考资料
可能重复:。可能重复:请注意:虽然两个建议的重复项本身都很有趣,但它们应该被视为稍微相关,而不是重复。
<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>
<TextBlock >
<Run Text="{DynamicResource CompanyName}" />
<Run Text="{DynamicResource ProductName}" />
<Run Text="{DynamicResource MajorVersion}" />
</TextBlock>