加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – RelayCommand CanExecute行为

发布时间:2020-12-15 08:08:15 所属栏目:百科 来源:网络整理
导读:我有以下命令: 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}"/
我有以下命令:
<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事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读