RelayCommand
)上强制调用CanExecute
吗?通常,只要UI发生交互,就会调用
CanExecute
。如果我点击某些东西,我的命令就会更新。我遇到了这样一种情况,
CanExecute
的条件由后台定时器开关控制。因为这不是由用户交互驱动的,所以CanExecute
直到用户与UI交互才会被调用。最终结果是我的Button
保持启用/禁用状态,直到用户点击它。点击后,它会正确地更新。有时,Button
看起来已启用,但当用户点击它时,它会变成禁用而不是触发。当定时器更改影响
CanExecute
的属性时,我该如何强制进行代码更新?我尝试在影响CanExecute
的属性上触发PropertyChanged
(INotifyPropertyChanged
),但没有帮助。XAML示例:
<Button Content="Button" Command="{Binding Cmd}"/>
后台示例代码:
private ICommand m_cmd;
public ICommand Cmd
{
if (m_cmd == null)
m_cmd = new RelayCommand(
(param) => Process(),
(param) => EnableButton);
return m_cmd;
}
// Gets updated from a timer (not direct user interaction)
public bool EnableButton { get; set; }