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