如果属性路径中的某个父对象为null,我们如何控制会发生什么?例如:
UIButton
如果<Button Command="{Binding ActiveDrawing.PrintCommand}" />
为空,该怎么办?我希望在这种情况下禁用此按钮,但WPF会使其保持启用状态。我尝试将ActiveDrawing
设置为null,如下所示:
FallBackValue
但它并没有什么区别。该按钮保持启用状态。
N.B。将<Button Command="{Binding ActiveDrawing.PrintCommand, FallbackValue={x:Null}}" />
设置为TargetNullValue
也没有任何区别。
答案 0 :(得分:1)
我现在已经设计了以下解决方法。
创建一个名为NullCommand
的新类:
Public Class NullCommand
Implements ICommand
Public Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
Public Sub Execute(parameter As Object) Implements ICommand.Execute
End Sub
Public Function CanExecute(parameter As Object) As Boolean Implements ICommand.CanExecute
Return False
End Function
End Class
在参考资料部分创建该类的实例:
<Window.Resources>
<vm:NullCommand x:Key="NullCommand" />
</RibbonGroup.Resources>
将此对象用作FallbackValue:
<Button Command="{Binding ActiveDrawing.PrintCommand, FallbackValue={StaticResource NullCommand}" />
乌拉!有用。只要绑定属性路径因任何原因失败,您的按钮就会被禁用。
TBH,我不喜欢这个解决方案的唯一原因。FallbackValue
应该处理这种情况。