2011-01-06 14 views
1

ログインしているユーザーを特定のページにリダイレクトするアプリケーションがあります。Silverlightの子ページからの移動

私の問題は、子ウィンドウからエラーメッセージが表示されていることです::: MainPage mp =(MainPage)Application.Current.RootVisual;この場合、どのようにリダイレクトできますか?

/// <summary> 
    /// Navigate to page that user is most likely to use. 
    /// </summary> 
    private static void NavigateToUserPage() 
    { 
     // Get logged in Role 
     User user = WebContext.Current.User; 

     // Count if collection > 1 
     List<string> roles = new List<string>(user.Roles); 

     if (roles.Count > 1) 
     { 
      // goto roles pages to select the user role 
     } 
     else 
     { 
      switch (roles[0]) 
      { 
       case "SiteAdmin": 
        Uri uriSiteAdmin = new Uri("OwnerOccupier", UriKind.Relative); 

        MainPage mp = (MainPage)Application.Current.RootVisual; 
        mp.ContentFrame.Navigate(uriSiteAdmin); 
        break; 

       case "OwnerOccupier": 
        Uri uriOwner = new Uri("OwnerOccupier", UriKind.Relative); 
        MainPage p = (MainPage)Application.Current.RootVisual; 
        p.ContentFrame.Navigate(uriOwner); 
        break; 

       default: 
        break; 

      } 
     } 
    } 
+0

エラーに関するヘルプが必要な場合は、エラーの詳細を含めると役立ちます。 – AnthonyWJones

答えて

1

ログインウィンドウは、LoginButton_ClickイベントハンドラのViews \ LoginのLoginStatusユーザーコントロールで呼び出されます。あなたが実際に行うことができるのは、コンテンツフレームのあるMainPageコンストラクタです.WebContext.Current.Authentication.LoggedInイベントを購読できます。また、ユーザーが正常に認証されたときに呼び出されるイベントハンドラでContentFrame.Navigate ({ここにuriを入力してください})。

+0

子ページにNavigationServiceがありません... – Greg

+0

私はログインの子フォームからSilverlightウィンドウに移動しようとしています。認証が成功したら...ウィンドウにナビゲートします。 – Greg

+0

ログインウィンドウを読み込むためにどのようなイベントが発生したのか誰でも説明することができます。クリックイベントハンドラの兆候はなく、XAMLには手がかりがありません – Greg

1

コードのある時点では、ChildWindowShowというメソッドがあります。これを行う前に、イベントハンドラをClosedイベントに追加してください。あなたのログインにそれを含めるのではなく、このハンドラにナビゲーションコードを入れてください。ChildWindow

+0

私は何も呼び出されていません - 私は標準のビジネステンプレートを使用しています - メインフォームにログインコントロールがありますが、イベントがどのように起動されるのかを見る方法 - 非常に不満です – Greg

+0

そのloginstatusコントロールハイパーリンクがクリックされたときに発生するクリックイベントですか? – Greg

関連する問題