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

Posted

技术标签:

【中文标题】WPF 数据绑定和级联转换器?【英文标题】:WPF Databinding and cascading Converters? 【发布时间】:2010-09-17 16:48:55 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

希望这会有所帮助!

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于WPF 数据绑定和级联转换器?的主要内容,如果未能解决你的问题,请参考以下文章

WPF数据绑定问题:子控件宽度是父容器宽度的1/3,如何做?

值转换器 WPF中Image数据绑定Icon对象

sql级联更新和级联删除不起作用

wpf 数据绑定 IsVisible 到 TabControl.SelectedItem != null

WPF 中的选择性双命令绑定转换器?

WPF中ListBox绑定了数据源,如何写转换器