确定窗口是完全隐藏的

时间:2010-08-25 13:20:14

标签: wpf

为了创建一个屏幕截图,我隐藏了一个wpf窗口。代码看起来像那样。

      Hide();
      var fullScreenshot = _cropper.TakeFullScreenshot();
      Show();

有时在拍摄屏幕截图时不会隐藏应用程序。我怎样才能确定窗口完全隐藏?

2 个答案:

答案 0 :(得分:1)

我不知道屏幕截图是如何拍摄的,但我怀疑UI-Thread没有删除所有内容,因此TakeFullScreenshot会看到你的应用程序的剩余部分。

我会尝试等到你的应用完成所有必要的ui-work然后触发TakeFullScreenshot - 操作。

使用Dispatcher

触发ScreenShot操作
Hide();
Dispatcher.BeginInvoke(new Action(delegate { 
    fullScreenshot = _cropper.TakeFullScreenshot(); 
    Show();
    }), System.Windows.Threading.DispatcherPriority.ContextIdle, null);

答案 1 :(得分:0)

目前我正在尝试这个解决方案:

public void Foo()
{
    IsVisibleChanged += WhenVisibiltyChangend_TakeScreenshot_and_OpenCreateTicketDialog;
    Hide();
}}

void WhenVisibiltyChangend(object sender, DependencyPropertyChangedEventArgs e)
{
    if ((bool)e.NewValue == false) { 
        var fullScreenshot = _cropper.TakeFullScreenshot();
        Show();
    }
}

我希望这是正确答案,但我必须做一些额外的测试。