【问题标题】:WPF Databinding and cascading Converters?WPF 数据绑定和级联转换器?
【发布时间】:2010-09-17 16:48:55
【问题描述】:
我想知道在使用 wpf 数据绑定时是否可以级联转换器。
例如像
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
是否有可能或者我必须创建一个自定义转换器来结合转换器 A 和 B 的功能?
【问题讨论】:
标签:
wpf
data-binding
xaml
binding
converter
【解决方案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' 中放置逻辑来组合来自两个绑定的值。