我有以下命令:

<Button x:Name="bOpenConnection" Content="Start Production"
        Grid.Row="0" Grid.Column="0"
        Height="30" Width="120" Margin="10"
        HorizontalAlignment="Left" VerticalAlignment="Top"
        Command="{Binding Path=StartProductionCommand}"/>
StartProductionCommand = new RelayCommand(OpenConnection, CanStartProduction);

private bool CanStartProduction()
{
   return LogContent != null && !_simulationObject.Connected;
}
CanStartProduction 仅在我重新调整 UI 大小时才检查,而不是即时更新。
知道为什么每次更改值时都不更新吗?

最佳答案

CommandManager无法知道该命令取决于LogContent_simulationObject.Connected,因此当这些属性更改时,它无法自动重新评估CanExecute

您可以通过调用CommandManager.InvalidateRequerySuggested显式请求重新评估。注意,它将为所有命令重新评估CanExecute;如果只想刷新一次,则需要通过调用CanExecuteChanged引发命令本身的StartProductionCommand.RaiseCanExecuteChanged事件。

10-08 11:19