从Silverlight子页面导航

时间:2011-01-06 10:05:36

标签: 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;

            }
        }
    }

2 个答案:

答案 0 :(得分:1)

在LoginBatton_Click事件处理程序的Views \ Login下的LoginStatus用户控件中调用登录窗口。您实际可以做的是在内容框架所在的MainPage构造函数中,您可以订阅WebContext.Current.Authentication.LoggedIn事件,并且在成功验证用户时将调用的事件处理程序中,您可以调用ContentFrame.Navigate ({输入uri here})。

答案 1 :(得分:1)

在代码中的某个时刻,您将使用ChildWindow Show方法。在此之前,为Closed事件添加一个事件处理程序。将导航代码放在此处理程序中,而不是将其包含在登录ChildWindow中。