Mvvm легкий инструментарий и навигация по кадрам - PullRequest
0 голосов
/ 15 июля 2010

У вас есть учебник, объясняющий навигацию с помощью URI.Когда мое приложение запускается, я загружаю в свой фрейм "Login.xaml" и его viewModel.Когда я нажимаю на кнопку «Журнал» (я использую команду relay), я хочу, чтобы мой кадр загружал «Acceuil.xaml».

как это сделать?

thx

1 Ответ

0 голосов
/ 20 июля 2010

Вы слишком стараетесь.Навигация по фреймам очень проста - просто создайте свой фрейм, например «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));
        }
    }

С радостью это поможет вам немного лучше понять навигационную рамку.

...