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,如何做?