2008-10-17 35 views
11

tôi tự hỏi nếu nó có thể cascade chuyển đổi khi sử dụng wpf databinding. ví dụ: giống nhưWPF Databinding và cascading Converters?

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

tôi có thể tạo bộ chuyển đổi tùy chỉnh kết hợp chức năng của bộ chuyển đổi A và B không?

Trả lời

7

Bạn có thể thử sử dụng MultiBinding và liên kết hai lần với cùng một nguồn, nhưng với các chuyển đổi khác nhau trên các liên kết đơn. Một cái gì đó như:

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

Sau đó, trong 'combiningConverter' bạn đặt logic để kết hợp các giá trị đến từ hai bindings.

18

Bạn có thể đang tìm giải pháp tương tự như "Piping Value Converters" của Josh Smith ".

Trong bài viết của mình, ông trình bày như sau:

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

Và sau đó sử dụng các bộ chuyển đổi đa giá trị như sau:

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

Hope this helps!