我正在使用MVVM-Light RelayCommand
private ICommand myRevertCmd;
public ICommand Revert
{
get
{
if (myRevertCmd == null)
{
myRevertCmd = new RelayCommand(RevertExecute, CanRevertExecute);
}
return myRevertCmd;
}
}
private void RevertExecute()
{
searchType = SearchType.Revert;
SearchStart();
}
private bool CanRevertExecute()
{
return isRevertEnabled;
}
Run Code Online (Sandbox Code Playgroud)
我有一些代码可以更改isRevertEnabled的值,但链接按钮不会更改.经过一些搜索,我发现你可以用来强制重新评估按钮状态
// force the GUI to re-evaluate the state of the buttons
CommandManager.InvalidateRequerySuggested();
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有人有什么建议?
Jen*_*ens 33
只是为了添加另一个可能的解决方案,在我的情况下,我需要调用CommandManager.InvalidateRequerySuggestedUI线程使用Application.Current.Dispatcher.Invoke.
我会将 isRevertEnabled 标志转换为属性,并从那里调用 OnPropertyChanged 方法(您需要实现 INotifyPropertyChanged 接口)。在更改标志时,您需要使用该属性,例如 IsRevertEnabled = true。
private bool isRevertEnabled;
public bool IsRevertEnabled
{
get
{
return isRevertEnabled;
}
set
{
if (isRevertEnabled != value)
{
isRevertEnabled = value;
OnPropertyChanged("IsRevertEnabled");
}
}
}
private bool CanRevertExecute()
{
return IsRevertEnabled;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9848 次 |
| 最近记录: |