【问题标题】:Use Binding in Resource without styles [duplicate]在没有样式的资源中使用绑定[重复]
【发布时间】: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


【解决方案1】:

您不能真正按原样重用绑定资源,但您可以创建一个标记扩展来应用此处建议的资源:

Binding as a Resource

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多