2011-01-06 110 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 2011-01-06 12:54:32

回答

1

在LoginButton_Click事件處理程序的Views \ Login下的LoginStatus用戶控件中調用登錄窗口。你實際上可以做的是在內容框架所在的MainPage構造函數中,你可以訂閱WebContext.Current.Authentication.LoggedIn事件,並且在事件處理程序中,當用戶成功通過身份驗證時將調用該事件處理程序,可以調用ContentFrame.Navigate ({在此輸入uri})。

+0

子頁面中沒有NavigationService ... – Greg 2011-01-06 12:03:50

+0

只是要清楚我正試圖從登錄子窗體導航到silverlight窗口。所以,如果身份驗證成功......導航到窗口。 – Greg 2011-01-06 12:13:06

1

在代碼中的某個位置,您將有一個叫做ChildWindowShow方法。在此之前,將事件處理程序添加到Closed事件中。把你的導航代碼放在這個處理程序中,而不是將它包含在登錄ChildWindow中。