【发布时间】:2017-04-07 08:20:11
【问题描述】:
我有一个MultiBinding,定义如下:
<MultiBinding StringFormat="{0}_{1}">
<Binding Path="..." />
<Binding Path="..." />
</MultiBinding>
我需要在多个地方使用它,并且想在我的资源中定义它,如:
<MultiBinding x:Name="MyDefaultBinding" StringFormat="...">
<!-- etc -->
</MultiBinding>
但是,我现在不知道如何使用它。我尝试了StaticResource 之类的:
<TextBlock Text="{StaticResource MyDefaultBinding}"
Style="{StaticResource SomeOtherStyle}" />
这给了我一个编译错误:“无效的资源类型:预期类型是 'string',实际类型是 'MultiBinding'。”.
当我尝试使用 Binding 访问它时:
<TextBlock Text="{Binding Source={StaticResource MyDefaultBinding}}"
Style="{StaticResource SomeOtherStyle}" />
它可以编译,但在运行时 TextBlock 中的文本设置为 "System.Windows.Data.MultiBinding" 而不是预期值。
我已经看到建议将MultiBinding 包装在Style 中,但是我已经在需要使用绑定的控件上定义了其他共享样式。
我可以评估资源中定义的绑定而不用样式包装它吗?
【问题讨论】:
-
我认为这是不可能的。但是,我认为您可以在新样式中使用
BaseOn扩展现有样式。这样一来,您就有一种带有绑定的样式,而另一种没有绑定,但样式仍然只编码一次。
标签: c# wpf xaml resourcedictionary