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

11

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

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

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

2个回答

18

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

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

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

然后按以下方式使用多值转换器:

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

希望这有所帮助!


7
您可以尝试使用 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' 中,您需要编写逻辑来组合来自两个绑定的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接