c# – RelayCommand CanExecute行为

前端之家收集整理的这篇文章主要介绍了c# – RelayCommand CanExecute行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下命令:
<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;
}

仅当我重新调整UI大小并且未动态更新时才会检查CanStartProduction.
知道为什么每次更改值都没有更新?

解决方法

CommandManager无法知道该命令依赖于LogContent和_simulationObject.Connected,因此当这些属性发生更改时,它无法自动重新评估CanExecute.

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

猜你在找的C#相关文章