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事件.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...