2008-10-17 68 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}}" /> 

希望這有助於!