C# CanExecute结果更改后控件不刷新
在我的窗口中,我有用于加载和保存方法的按钮。我使用CommandBinding,save按钮有一个CanExecute属性,以防止用户在加载数据之前保存数据 CanExecute方法连接到一个名为“canSaveXML”的简单布尔值 我的目的是在加载数据后设置canSaveXML=true,但在值发生更改后控件不会刷新。我读了一些书,发现我必须打电话给CommandManager.InvalidateRequest。我现在这样做了,我的代码如下所示C# CanExecute结果更改后控件不刷新,c#,wpf,commandbinding,C#,Wpf,Commandbinding,在我的窗口中,我有用于加载和保存方法的按钮。我使用CommandBinding,save按钮有一个CanExecute属性,以防止用户在加载数据之前保存数据 CanExecute方法连接到一个名为“canSaveXML”的简单布尔值 我的目的是在加载数据后设置canSaveXML=true,但在值发生更改后控件不会刷新。我读了一些书,发现我必须打电话给CommandManager.InvalidateRequest。我现在这样做了,我的代码如下所示 canSaveXML = true; Comm
canSaveXML = true;
CommandManager.InvalidateRequerySuggested();
但控件(按钮)仍不刷新。在我触发UI上的任何内容或最小化/最大化窗口之前,我仍然处于禁用状态。在我这样做之后,按钮被启用
这里怎么了
在MSDN示例中,CommandManager.InvalidateRequestSuggested被调度程序反复调用,但我不相信这是唯一的解决方案。好的,我自己发现了
canSaveXML = true;
CommandManager.InvalidateRequerySuggested();
是后台工作程序中的代码。不好的。您必须告诉窗口的调度程序调用CommandManager.InvalidateRequestSuggested() 谢谢,你帮我省去了很多麻烦。谢谢你的回答。我在RunWorkerCompleted事件处理程序中添加了CommandManager.InvalidateRequestSuggested()方法,效果非常好!
canSaveXML = true;
CommandManager.InvalidateRequerySuggested();