场景是我有文本框,当用户
时我把URL放在那里输入网址并按下go我在服务时调用TPL中的服务
加载我需要启用下一个按钮(我正在处理向导)如果我不使用TPL IsServicevalid get true(绑定到命令)并启用下一个按钮。但在任务(TPL)中加载数据并且下一个是禁用的(即使我把它放在继续中)我注意到如果我在下一轮启用的任何地方用鼠标点击页面,你会遇到这样的问题吗?
即使下一个按钮被禁用,我点击它就会启用,所有这一切都会发生
当我使用任务时,任何想法?
这很奇怪...... :(
Task.Factory
.StartNew(() =>
{
//-----get service Data ---------
try
{
GetUsersData();
}
catch (Exception e)
{
_isValid = false;
ThrowErrorMessage(e.Message);
}
})
.ContinueWith((task) =>
{
Mouse.OverrideCursor = null;
}, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
isServiceValid = true;
答案 0 :(得分:2)
有时命令的CanExecute状态不会反映在ui上,直到你点击它为止。
我不知道为什么会发生这种情况,我个人认为这是一种应该在框架内自行更改的行为。
但是,您可以通过调用
强制更新System.Windows.Input.CommandManager.InvalidateRequerySuggested();