ITPub博客

首页 > > > WPF使用MVVM数据绑定时,UI未能及时更新

WPF使用MVVM数据绑定时,UI未能及时更新

作者:llittle 时间:2019-11-06 10:08:47 0 删除 编辑

现在项目中使用有添加扫描件的功能,即将扫描仪中的图像保存下来。现在的问题是,在点击了程序中的“扫描”按钮后,在扫描仪扫描完成了,如果这时程序的窗口不是windows的活动窗口,比如切换到另外一个程序时,窗口绑定的扫描图像没有自动更新(可以看到绑定源已经更新了),这时再切换来回来时也不会更新,只有在窗口中的某个可以获取焦点的控件上移动一下鼠标什么的,UI就自动刷新了,这是哪里问题呢?

“扫描”按钮绑定的事件如下

public ICommand cmdScanFile
            {
                get
                {
                    return new DelegateCommand<string>((arg) =>
                    {
                        var bg = new BackgroundWorker();
                        bg.DoWork += (a, b) =>
                        {
                            try
                            {
                                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                                {
                                    StartScan();
                                }), DispatcherPriority.ApplicationIdle);
                            }
                            catch (Exception ex)
                            {
                            }
                            finally
                            {
                            }
                        };
                        bg.RunWorkerAsync();
                    });
                }
            }


扫描完成后,更新数据源代码如下

private void AddFiles(List<PersonFile> listFiles)
            {
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    var index = Files.Count + 1;
                    foreach (var file in listFiles)
                    {
                        file.Index = index;
                        Files.Add(file);
                        index++;
                    }
                    HasFiles = Files.Count > 0;
                }), DispatcherPriority.ApplicationIdle);
            }

上面Files为ObservableCollection集合,PersonFile为文件对象,绑定时读取其文件路径。

发现这个问题是因为今天拿了一台扫描仪来测试,在安装了驱动后,多出两个扫描仪名称,一个是自身型号开头的,另外一个是WIA开头的,基实是一个机器,估计是驱动接口不同,之前本来就有一个虚拟扫描仪,现在一共三个,但只有使用这个机型型号开头的名称进行扫描时才会出现这个问题,其它两个不会。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/813/viewspace-3133999/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    448
  • 访问量
    4369