2017-04-07 19 views
-1

我有一个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}" /> 

这给了我一个编译错误:“无效的资源类型:预测的类型是‘字符串’,实际类型是‘MultiBinding’。”

当我试图用来访问它Binding像:

<TextBlock Text="{Binding Source={StaticResource MyDefaultBinding}}" 
      Style="{StaticResource SomeOtherStyle}" /> 

它编译,但在运行时在TextBlock文本设置为“System.Windows.Data.MultiBinding”代替期望值。

我见过建议,建议在Style中包装MultiBinding,但是我已经在控件上定义了其他共享样式,我需要使用该绑定。

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

+0

我不认为这是可能的。不过,我认为你可以用你的新风格使用'BaseOn'扩展现有的样式。这样,你有一种风格与绑定和一个没有,但仍然有风格只编码一次。 – wkl

回答

0

你真的不能再使用绑定资源原样,但你可以创建如下建议,应用资源标记扩展:

Binding as a Resource