Создание примеров WPF в LinqPad - PullRequest
12 голосов
/ 18 марта 2011

Есть ли способ разумно создавать экземпляры объектов WPF в LinqPad?Вот мой пример (правильные сборки добавляются в запрос и т. Д.):

var w = new Window();
w.Loaded += (o,e) => {
    w.Content = new TextBlock() { Text = "Foo" };
};

w.Show();

Однако это умирает ужасной смертью:

System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.

   at System.Windows.Input.TextServicesContext.StopTransitoryExtension()
   at System.Windows.Input.TextServicesContext.Uninitialize(Boolean appDomainShutdown)
   at System.Windows.Input.TextServicesContext.TextServicesContextShutDownListener.OnShutDown(Object target, Object sender, EventArgs e)
   at MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)

Любые подсказки о том, как я могу получить этоработать?

Ответы [ 2 ]

11 голосов
/ 19 марта 2011

Другой способ сделать это выглядит следующим образом:

w.ShowDialog();
Dispatcher.CurrentDispatcher.InvokeShutdown();  // Cleanly end WPF session.

Дополнительные примеры:

new Window { Content = "Foo" }.ShowDialog();
new Window { Content = new Button { FontSize = 50, Content = "Foo" } }.ShowDialog();

Dispatcher.CurrentDispatcher.InvokeShutdown();  // Cleanly end WPF session.
7 голосов
/ 18 марта 2011

Вам нужно запустить цикл сообщений, вызвав new Application().Run(w).

...