WPF 数据绑定和级联转换器?

Posted

技术标签:

【中文标题】WPF 数据绑定和级联转换器?【英文标题】:WPF Databinding and cascading Converters? 【发布时间】:2010-09-17 16:48:55 【问题描述】:

我想知道在使用 wpf 数据绑定时是否可以级联转换器。 例如像

<SomeControl Visibility="Binding Path=SomeProperty, Converter=StaticResource firstConverter, Converter=StaticResource secondConverter"/>

是否有可能或者我必须创建一个自定义转换器来结合转换器 A 和 B 的功能?

【问题讨论】:

【参考方案1】:

您可能正在寻找类似于 Josh Smith 的“Piping Value Converters”的解决方案。

在他的文章中,他提出了以下内容:

<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
  <local:IntegerStringToProcessingStateConverter  />
  <local:EnumToDisplayNameConverter />
</local:ValueConverterGroup> 

然后使用多值转换器如下:

<TextBlock Text="Binding XPath=@Status, 
             Converter=StaticResource statusDisplayNameGroup" />

希望这会有所帮助!

【讨论】:

【参考方案2】:

您可以尝试使用 MultiBinding,并将两次绑定到同一个源,但在单个绑定上使用不同的转换。比如:

<SomeControl>
    <SomeControl.Visibility>
        <MultiBinding Converter="StaticResource combiningConverter">
            <Binding Path="SomeProperty" Converter="StaticResource firstConverter"/>
            <Binding Path="SomeProperty" Converter="StaticResource secondConverter"/>
        </MultiBinding>
    </SomeControl.Visibility>
</SomeControl>

然后在 'combiningConverter' 中放置逻辑来组合来自两个绑定的值。

【讨论】:

以上是关于WPF 数据绑定和级联转换器?的主要内容,如果未能解决你的问题,请参考以下文章