首页 > 解决方案 > 在 MVVM 中将 Window 设置为隐藏后捕获屏幕

问题描述

在将窗口变量设置为隐藏并触发 onPropertyChanged() 后,我试图捕获屏幕。为什么我还要录制自己的节目?

_VisibilityWindow = false;
OnPropertyChanged("VisibilityWindow");


Screenshot.captureAll();

_VisibilityWindow = true;
OnPropertyChanged("VisibilityWindow");

标签: c#wpfmvvm

解决方案


属性更改后,UI 没有机会更新。您可以等到应用程序完成渲染,Dispatcher而是使用:

_VisibilityWindow = false;
OnPropertyChanged("VisibilityWindow");

System.Windows.Application.Current?.Dispatcher?.Invoke(() =>
  {
    Screenshot.captureAll();

    _VisibilityWindow = true;
    OnPropertyChanged("VisibilityWindow");
  }, DispatcherPriority.ApplicationIdle);

推荐阅读