2008-10-17 40 views
11

我不知道是否有可能在使用wpf数据绑定时级联转换器。 例如像WPF数据绑定和级联转换器?

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

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

回答

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”你把从两个绑定来的值相结合的逻辑。

18

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

在他的文章,他提出以下几点:

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

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

<TextBlock Text="{Binding [email protected], 
      Converter={StaticResource statusDisplayNameGroup}}" /> 

希望这有助于!