代码之家  ›  专栏  ›  技术社区  › 

CanExecute结果更改后控件不刷新

  •  5
  •  · 技术社区  · 7 年前

    在我的窗口中,我有用于加载和保存方法的按钮。我使用CommandBinding,save按钮有一个CanExecute属性,以防止用户在加载数据之前保存数据。

    private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        if (canSaveXML == false)
        {
            e.CanExecute = false;
        }
        else
        {
            e.CanExecute = true;
        }
        e.Handled = true;
    } 
    

    我的目的是在加载数据后设置canSaveXML=true,但在值发生更改后控件不会刷新。我读了一些书,发现我必须打电话给CommandManager.InvalidateRequest。我现在这样做了,我的代码如下所示。

    canSaveXML = true;
    CommandManager.InvalidateRequerySuggested();
    

    但控件(按钮)仍不刷新。在我触发UI上的任何内容或最小化/最大化窗口之前,我仍然处于禁用状态。在我这样做之后,按钮被启用。

    这里怎么了?

    1 回复  |  直到 17 年前
        1
  •  9
  •   TalkingCode    17 年前

    好吧,我自己发现了。

    canSaveXML = true;
    CommandManager.InvalidateRequerySuggested();