【发布时间】:2017-12-20 13:16:46
【问题描述】:
如果属性路径中的父对象之一为空,我们如何控制会发生什么?例如:
<Button Command="{Binding ActiveDrawing.PrintCommand}" />
如果ActiveDrawing 为空怎么办?我希望在这种情况下禁用此按钮,但 WPF 保持启用状态。我尝试将FallBackValue 设置为null,如下所示:
<Button Command="{Binding ActiveDrawing.PrintCommand, FallbackValue={x:Null}}" />
但这并没有什么不同。该按钮保持启用状态。
注意将TargetNullValue 设置为{x:Null} 也没有什么区别。
【问题讨论】:
-
实现一个 PrintCommand ,并在 CanExecute 中检查 ActiveDrawing.PrintCommand。移除直接耦合。
-
我确实实现了
PrintCommand和CanExecute。问题是,如果ActiveDrawing为空,WPF 将无法评估CanExecute。如果您要我将我的所有命令从 ActiveDrawing 移动到当前上下文,那是一项太大的任务。我相信应该有一种简单的方法来指定一个值,以防绑定评估由于某种原因而失败。 -
事实上,我希望
FallbackValue仅用于此目的,但不知何故,它并没有像我预期的那样工作。