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



我有以下问题,

我有一个用户可以选择的项目级联。

例如,我有一个项目列表A,可以从该列表中选择一个项目,并且可以通过属性SelectedA

每个A都有一个项目列表B。其中的每一个都可以选择,因此A提供了一个属性SelectedB

项目B然后具有布尔值C的属性

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

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

现在,正如您所看到的,我使用转换器来设置可见性。然而,问题是,只要没有选择AB,转换器就不会使用。因此,Visibiltiy仍将设置为可见。

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

因此,在这种情况下,我必须对SelectedA的元素进行包装,以检查它是否为null,并对布尔转换器具有可见性,然后对SelectedB进行另一个包装元素,以查看它是否也是null。只有到那时,我才能使用实际的元素和绑定。

是否有任何方法可以强制转换器使用null值触发,以便正确设置可见性?

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

最新更新