使用MVVM WPF表单。
我正在使用RelayCommand:
1)更改控件可见性
2)运行一个漫长的过程
3)更新控件的可见性
命令代码如下:
private RelayCommand _MyCommand;
public RelayCommand MyCommand
{
get
{
return _MyCommand
?? (_MyCommand = new RelayCommand(
() =>
{
//1 update control's visibility
GridViewVisibility = false;
//deleting a reference is done via multithreading as the process is quite long (10 sec)
Task.Run(() =>
{
Application.Current.Dispatcher.Invoke((new Action(() =>
{
//2 looong process here
//3 update control's visibility
GridViewVisibility = true;
}
)));
}
);
} ));
}
}
系统地说,当我第一次运行命令时,它完美地运行。控件可见性按预期更新(在流程之前和之后)。
但是当我再次触发命令时,仍然执行操作2。 达到了更新可见性的代码,但未呈现(1和3)。所以控件的可见性不会更新。
知道为什么????