调用window.showdialog后如何以编程方式关闭窗口?

时间:2013-09-12 05:35:37

标签: c# winforms .net-4.5 prism-4

我正在创建一个测试方法,我在其中使用window.showdialog方法打开一个窗口但是在我点击关闭按钮之前,没有开始执行更多代码。

这是我的测试方法:

[TestMethod]
public void TestProductView()
{
    SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

    ProductTreeDragDropViewModel viewmodel = new ProductTreeDragDropViewModel();
    System.Windows.Window window = new System.Windows.Window();

    ProductTreeDragDrop screen = new ProductTreeDragDrop();

    screen.ViewModel = viewmodel;
    window.Content = screen;

    window.ShowDialog();
    DoEvents();
    Thread.Sleep(9000);

 }

public  void DoEvents()
{
   DispatcherFrame frame = new DispatcherFrame();
   Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new   DispatcherOperationCallback(ExitFrame), frame);
    Dispatcher.PushFrame(frame);
}

注意:如果我使用window.show方法,则不会在viewmodels的数据源中返回数据。

现在,如何在执行window.showdialog方法后以编程方式关闭窗口

1 个答案:

答案 0 :(得分:0)

使用ShowDialog启动对话框时,控件将转到新打开的对话框。因此,您需要在启动的对话框中执行关闭操作。

或者,您可以尝试

window.Show();
Thread.Sleep(10000);
window.Close();
DoEvents();