绑定表达式中的空值检查

8
WPF绑定表达式语法中是否有空值检查机制?例如,我的TextBox显示了People对象数组的第一个元素的Address字段,如下所示:
Text="{Binding AllPeople[0].Address}" 

AllPeople 有时可能为空。这不会引发任何异常,但是WPF会在Immediate窗口中静默记录绑定错误消息。是否有一种方式可以通过在Path表达式中指定null-safety来避免这种情况?例如 AllPeople?[0] .Address

注意:我知道可以使用转换器轻松完成此操作。我正在寻找一种简写符号。


你可以尝试定义一些空的类实例,使用它而不是null。这就像所谓的Null Object Pattern。这可能有点过度设计了。在这里检查null的目的可能是要在null时显示一些自定义字符串,所以我认为使用Converter是相当标准的。 - King King
1个回答

6
在您的绑定中,可以配置两个可选属性:TargetNullValueFallbackValue。第一个属性应该是您需要的。
如果绑定在运行时不起作用,FallbackValue将被应用。
示例:
IsEnabled="{Binding Path=EnabledFlagInViewModel, TargetNullValue=false}"

在 OP 的情况下,AllPeople 可能为 null。但实际路径是 AllPeople[0].Address。因此,我认为您需要将路径更改为 AllPeople 才能使用 TargetNullValue,然后仍然需要一些转换器来设置实际值 (AllPeople[0].Address)。但是我认为 FallbackValue 是 OP 需要的。在这种情况下,绑定将失败并使用 FallbackValue - King King
1
感谢您的输入。在这种情况下, TargetNullValue 无效;然而 FallbackValue 可以使用。虽然它不完全是我所要求的,但至少它可以让我避免编写转换器并以标准方式解决手头的问题。 - dotNET

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接