有谁知道我可以如何强制CanExecute
使用自定义命令(乔什·史密斯的RelayCommand
)?
通常,CanExecute
只要在UI上发生交互,就会调用。如果单击某些内容,则命令将更新。
我遇到的情况CanExecute
是幕后的计时器会打开/关闭条件。因为这不是由用户交互驱动的,CanExecute
所以直到用户与UI交互才被调用。最终结果是我Button
保持启用/禁用状态,直到用户单击它为止。单击后,它会正确更新。有时Button
显示为已启用,但是当用户单击时,它变为禁用而不是触发。
当计时器更改影响的属性时,如何强制代码更新CanExecute
?我尝试在影响的属性上触发PropertyChanged
(INotifyPropertyChanged
)CanExecute
,但这并没有帮助。
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; }