12

LinqPad で WPF オブジェクトを正常にインスタンス化する方法はありますか? これが私の例です(正しいアセンブリがクエリに追加されるなど):

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)

これを機能させる方法についての手がかりはありますか?

4

2 に答える 2

11

それを行う別の方法は次のとおりです。

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.
于 2011-03-19T01:56:40.887 に答える
7

を呼び出してメッセージ ループを実行する必要がありますnew Application().Run(w)

于 2011-03-18T20:44:51.140 に答える