WPF:控件可见性在第一次之后不会在命令中呈现

时间:2016-07-04 12:59:02

标签: c# wpf mvvm

使用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)。所以控件的可见性不会更新。

知道为什么????

0 个答案:

没有答案