使用silverlight中的转换器进行级联属性绑定

时间:2013-12-21 19:24:29

标签: c# silverlight xaml binding converter

我有以下问题,

我有一系列可由用户选择的项目。

例如,我有一个项目列表 A ,可以选择此列表中的项目,并通过 SelectedA 属性提供。

每个 A 包含 B 项目列表。每个都可以选择,因此 A 提供属性 SelectedB

B 的属性为布尔值 C

现在我可以通过做这样的事情直接绑定到 C

Visibility="{Binding SelectedA.SelectedB.C, Converter={StaticResource BooleanToVisibilityConverter}}"

现在您可以看到我使用转换器来设置可见性。但问题是,只要没有选择 A B ,就不会使用转换器。因此Visibiltiy仍然可见。

为了防止我被迫将项目包装在另一个GUI项目中,以便我可以检查所选项目的空值。

所以我必须在这种情况下为 SelectedA 包装元素以检查它是否为null并且具有boolean转换器的可见性,然后是 SelectedB 看到的也是空的。只有这样我才能使用实际的元素和绑定。

无论如何强制转换器以空值触发,因此可见性设置正确吗?

1 个答案:

答案 0 :(得分:1)

当绑定值为TargetNullValue时,您可以在绑定上使用null来提供默认值。绑定失败时,您可以使用FallbackValue提供值。根据您的要求,将其中一项或两项设置为Visibility.CollapsedVisibility.Hidden