2014-02-22 2 views
2

셸을 만들 때 WPF/PRISM에서는 App.Current.MainWindow에 할당됩니다. 그러나 브라우저에서 WPF (XBAP) 라인에서 :XBAP/프리즘에서 쉘을 초기화하는 방법은 무엇입니까?

App.Current.MainWindow = (Window)Shell; 

오류 메시지와 함께 실패합니다

타입 입력 할 'XBAPClient.Page1' '개체를 캐스팅 할 수 없습니다 System.Windows.Window '.

protected override DependencyObject CreateShell() 
{    
    return this.Container.GetExportedValue<Page1>(); 
} 

protected override void InitializeShell() 
{ 
    base.InitializeShell(); 
    App.Current.MainWindow = (Window)Shell; 
    App.Current.MainWindow.Show(); 
} 

어떻게 쉘을로드 할 수 있습니다

?

+0

당신이 대신 윈도우의 페이지를 사용하여 XBAP를 사용하는 경우. 따라서 쉘을 창에 투영 할 수는 없습니다. 자세한 내용은이 스레드를 확인하십시오. http://compositewpf.codeplex.com/discussions/31058?ProjectName=compositewpf – kmatyaszek

+0

업데이트 : 첫 번째 주석을 읽었습니다. 지시 사항은 훌륭했습니다. 그러나 아직도 운이 없다. 왜 그 실행되지 조사. 그러나 적어도 그 건물. 고마워 – Houman

+0

@ kmatyaszek 안타깝게도'Page1.xaml.cs'가'Bootstrapper.ShellPage = this'를 설정하기 전에'CreateShell'이 먼저 호출됩니다; 따라서 항상 null 쉘을 반환합니다. 조언 있니? – Houman

답변

2

XBAP Application.Current.MainWindowMS.Internal.AppModel.RootBrowserWindow입니다.

에만이 같은 윈도우 내용에 페이지를 할당해야합니다 :

... 
protected override void InitializeShell() 
{ 
    base.InitializeShell();  
    Application.Current.MainWindow.Content = Shell; 
} 
... 
+0

당신은 스타입니다! 이제 실제로 작동합니다. 어떻게 그걸 알아 냈어? +1 – Houman

+1

난 그냥 코드를 디버깅하고 그 문제를 해결하려고 :) – kmatyaszek