我有以下问题,
我有一个用户可以选择的项目级联。
例如,我有一个项目列表A,可以从该列表中选择一个项目,并且可以通过属性SelectedA。
每个A都有一个项目列表B。其中的每一个都可以选择,因此A提供了一个属性SelectedB。
项目B然后具有布尔值C的属性
现在我可以通过这样做直接绑定到C。
Visibility="{Binding SelectedA.SelectedB.C, Converter={StaticResource BooleanToVisibilityConverter}}"
现在,正如您所看到的,我使用转换器来设置可见性。然而,问题是,只要没有选择A和B,转换器就不会使用。因此,Visibiltiy仍将设置为可见。
为了防止这种情况,我将被迫将项目包装在另一个GUI项目中,这样我就可以检查所选项目的空值。
因此,在这种情况下,我必须对SelectedA的元素进行包装,以检查它是否为null,并对布尔转换器具有可见性,然后对SelectedB进行另一个包装元素,以查看它是否也是null。只有到那时,我才能使用实际的元素和绑定。
是否有任何方法可以强制转换器使用null值触发,以便正确设置可见性?
当绑定值为null
时,可以在绑定上使用TargetNullValue
来提供默认值。当绑定失败时,可以使用FallbackValue
提供一个值。根据您的要求,将其中一个或两个设置为Visibility.Collapsed
或Visibility.Hidden
。