Навигация с дочерней страницы Silverlight - PullRequest
1 голос
/ 06 января 2011

У меня есть приложение, которое должно перенаправить вошедшего в систему пользователя на определенную страницу.

Моя проблема в том, что я получаю сообщение об ошибке из дочернего окна ::: 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;

            }
        }
    }

Ответы [ 2 ]

1 голос
/ 06 января 2011

В какой-то момент в коде у вас будет вызван метод ChildWindow Show. Перед этим добавьте обработчик события к событию Closed. Поместите свой код навигации в этот обработчик, а не включайте его в свой логин ChildWindow.

1 голос
/ 06 января 2011

Окно входа вызывается в пользовательском элементе управления LoginStatus в разделе Views \ Login в обработчике события LoginButton_Click.На самом деле вы можете сделать это в конструкторе MainPage, где расположен фрейм контента, вы можете подписаться на событие WebContext.Current.Authentication.LoggedIn, а в обработчике событий, который будет вызываться при успешной аутентификации пользователя, вы можете вызывать ContentFrame.Navigate.({введите здесь uri}).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...