TL/DR:
如何通知包含它包含Window
的某个UserControl
调用ICommand
/ RelayCommand
/ DelegateCommand
?
我想CanExecuteChanged
回应Window
.
扩张:
UserControl
:_
<UserControl x:Class="CarProject.CarUserControl" ... >
<!-- lots of stuff here... -->
<Button Name="FuelCar" Command="{Binding FuelCarCommand}"
CommandParameter="{Binding FuelType}" >
Start fueling the car...
</Button>
<!-- lots of stuff here... -->
</UserControl>
Window
:_
<Window ...
xmlns:carProject="clr-namespace:CarUserControl;assembly=CarUserControl"
...
>
<!-- lots of stuff here... -->
<carProject:CarUserControl Name="TheCar"/>
<!-- lots of stuff here... -->
</Window>
每当FuelCar
单击按钮时,一个自定义命令FuelCarCommand
就是Execute
d。(什么应该是正确的类型FuelCarCommand
?简单ICommand
的实现?一个RelayCommand
子类型或一个DelegateCommand
?或者可能只是简单Routed Events
的,就是这样......?)。
该命令执行一些业务逻辑操作,并且在工作时(为汽车加油需要时间),其中的其他控件CarUserControl
被禁用。
但我还需要Window
禁用一些不直接相关的控件CarUserControl
(例如FuelStationNumberOne
应该禁用,因为它被 占用CarUserControl
)。
实现这一目标的正确方法是什么?命令在这里是正确的意思吗?