2013-09-12 6 views
2

Я создаю тестовый метод, в котором я открываю окно, используя метод window.showdialog, но пока я не нажимаю кнопку закрытия, выполнение дополнительного кода не начинается.Как закрыть окно программно после вызова 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 метода ??

+0

Основная проблема заключается в том, что код после того, как «window.showdialog» не выполняет ... пока я не нажимать кнопку colse. –

ответ

0

Когда вы запускаете диалог с помощью ShowDialog, элемент управления переходит к вновь открытому диалоговому окну. Поэтому вам нужно выполнить операцию закрытия в запущенном диалоговом окне.

В качестве альтернативы, вы можете попробовать

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

Вы правы кришна, но я не знаю, как обрабатывать недавно открытый диалог? Можете ли вы мне помочь? –

+0

Я не уверен, что вы выполняете во вновь открывшемся диалоговом окне. Пожалуйста, разместите код с экрана, который вы упомянули. Это может помочь. –

+0

Я создаю метод тестирования, поэтому мы не можем изменить код, который написан в фактическом окне. –

Смежные вопросы