我想知道在使用WPF数据绑定时是否可以级联转换器。例如,像这样:
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
这是否完全可能,或者我必须创建一个自定义转换器,将转换器 A 和 B 的功能结合起来?
我想知道在使用WPF数据绑定时是否可以级联转换器。例如,像这样:
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
这是否完全可能,或者我必须创建一个自定义转换器,将转换器 A 和 B 的功能结合起来?
你可能正在寻找类似于Josh Smith的“Piping Value Converters” 的解决方案。
在他的文章中,他提出了以下内容:
<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
<local:IntegerStringToProcessingStateConverter />
<local:EnumToDisplayNameConverter />
</local:ValueConverterGroup>
然后按以下方式使用多值转换器:
<TextBlock Text="{Binding XPath=@Status,
Converter={StaticResource statusDisplayNameGroup}}" />
希望这有所帮助!
<SomeControl>
<SomeControl.Visibility>
<MultiBinding Converter="{StaticResource combiningConverter}">
<Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/>
<Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/>
</MultiBinding>
</SomeControl.Visibility>
</SomeControl>
然后在 'combiningConverter' 中,您需要编写逻辑来组合来自两个绑定的值。