在没有样式的资源中使用绑定

时间:2017-04-07 08:20:12

标签: c# wpf xaml resourcedictionary

我的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中的建议,但是我已经在控件上定义了其他共享样式,我需要使用绑定。

我是否可以评估资源中定义的绑定而不将其包装在样式中?

1 个答案:

答案 0 :(得分:0)

您无法按原样重复使用绑定资源,但您可以创建一个标记扩展,按照此处的建议应用资源:

Binding as a Resource