Mvvm轻工具包并按框架导航

时间:2010-07-15 15:25:52

标签: silverlight-4.0 mvvm-light

你有一个tutoriel解释用uri导航。当我的应用程序开始时,我加载我的框架“Login.xaml”和他的viewModel。当我点击我的按钮“Log”(我使用一个relaycommand)我希望我的帧加载“Acceuil.xaml”。

如何制作?

THX

1 个答案:

答案 0 :(得分:0)

你太努力了。框架导航非常简单 - 只需创建框架,例如“MyFrame”,然后使用简单的NavigateUri值“/Acceuil.xaml”创建超链接。如果要显示/隐藏视图模型的状态/详细信息中的链接,请使用绑定到视图模型并在视图模型中更新的属性。例如。您可以使用UserInfo属性,然后使用此类转换器类来显示/隐藏基于UserInfo属性为空值或类结果:

public class HideWhenNullConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
        {
            return Visibility.Collapsed;
        }
        return Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

希望这可以帮助您入门。另一个提示是为您的应用程序添加一些逻辑,以防止尝试导航到未经身份验证的位置。例如:

        private void mainFrame_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        List<string> anonUrls = new List<string>();
        anonUrls.Add("/Welcome");
        anonUrls.Add("/Register");
        anonUrls.Add("/ValidateEmail");

        var myAnonUrl = (from u in anonUrls
                        where e.Uri.OriginalString.StartsWith(u)
                        select u).Count();

        if ((WebContext.Current.User == null ||
            WebContext.Current.User.IsAuthenticated  == false) &&
            myAnonUrl == 0)
        {
            origUri = e.Uri;
            e.Cancel = true;
            mainFrame.Navigate(new Uri("/Welcome", UriKind.Relative));
        }
    }

这可以帮助您更好地理解导航框架。