ShellViewModelでは、新しいウィンドウ「リモートビュー」を開くためのコマンドバインディングの下にあります
public ICommand RemoteViewCommand
{
get { return new RelayCommand(RemoteViewExecute, CanRemoteViewExecute); }
}
private void RemoteViewExecute()
{
if (!CanRemoteViewExecute())
{
return;
}
var shellRemoteView = Application._Container.Resolve<ShellRemoteView>();
if (_ShellRemoteView.DataContext==null)
_ShellRemoteView.DataContext = Application._Container.Resolve<ShellRemoteViewModel>();
shellRemoteView.Show();
}
起動時に、ライフタイムマネージャーを使用してシングルトンインスタンスを持つ「ShellRemoteView」と「ShellRemoteViewModel」の両方を既に登録しています。
_Container.RegisterType<ShellRemoteView>(new ContainerControlledLifetimeManager());
_Container.RegisterType<ShellRemoteViewModel>(new ContainerControlledLifetimeManager());
shellRemoteView.Show() を実行してフォームを閉じると、再び shellRemoteView.Show() を呼び出すと、Invalid Operation exception:Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed が発生します。
閉じた場合にウィンドウインスタンスを再度取得するための回避策は Unityにありますか。