我有以下命令:
<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
;如果只想刷新一个,则需要通过调用 StartProductionCommand.RaiseCanExecuteChanged
在命令本身上引发 CanExecuteChanged
事件。
关于c# - RelayCommand CanExecute 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065885/