在我的窗口中,我有加载和保存方法的按钮。我使用 CommandBinding 并且保存按钮具有 CanExecute 属性,以防止用户在加载数据之前保存数据。
CanExecute-Methode 连接到一个名为“canSaveXML”的简单布尔值
private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
if (canSaveXML == false)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
e.Handled = true;
}
我的意图是在加载数据后设置 canSaveXML = true 但在值发生更改后控件不会刷新。我做了一些阅读,发现我必须调用 CommandManager.InvalidateRequerySuggested。我现在这样做,我的代码看起来像这样。
canSaveXML = true;
CommandManager.InvalidateRequerySuggested();
但是控件(按钮)仍然没有刷新。在我触发 UI 上的任何内容或最小化/最大化窗口之前,我仍然处于禁用状态。在我这样做之后,按钮被启用。
这里有什么问题?
在 MSDN 示例中,CommandManager.InvalidateRequerySuggested 一次又一次地使用调度程序计时器调用,但我拒绝相信这将是唯一的解决方案。