Member 13075342 Ответов: 1

Кнопка Назад в xaml & C#


Итак, я уже немного изучаю Xaml и C#. Я разработал приложение, используя некоторую базовую навигацию, однако я наткнулся на проблему. Так, например, я создал различные информационные панели для разных типов пользователей. Они имеют доступ только к определенным страницам. Вот пример:

У меня есть страница под названием Управление пользователями, которая просматривает всех пользователей в приложении. Только пользователю а должно быть разрешено просматривать содержимое. На этой странице есть кнопка Создать, которая перемещает пользователя а для создания нового пользователя. Ну, проблема в том, что пользователь B должен иметь возможность создать пользователя, но пользователю B не должно быть позволено нажать кнопку назад и получить доступ к экрану управления пользователями, который может просматривать только пользователь A.

Я понимаю, почему он это делает. Я просто не знаю, как это обойти. Отсюда и тот факт,что я учусь...

Вот строка кода, которую я использую при навигации с помощью моей текущей кнопки Назад:

это.NavigationServices.Выберите(новый вид.UserManage.язык XAML());


Что я могу сделать, чтобы он всегда возвращал вас к предыдущему экрану? (Кроме того, я не хочу, чтобы эта уродливая панель навигации вверху была со стрелкой.) Я предпочитаю сделать его как можно более чистым.

Если кто-то может дать мне некоторые дополнительные детали при объяснении этого, это было бы здорово! Я относительно новичок и надеюсь, что это не будет огромной задачей..

Спасибо!

Что я уже пробовал:

Google, YouTube, я не знаю точных ключевых слов для ввода и не нашел учебника по этому вопросу.

1 Ответов

Рейтинг:
1

Graeme_Grant

В навигации WPF нет возможности посмотреть на заднюю стопку страниц.

У вас есть целый ряд различных вариантов. Вот два с моей головы:

1. Очистите историю, когда "пользователь Б" входит в систему:

public void ClearHistory()
 {
     if (!this.Frame.CanGoBack && !this.Frame.CanGoForward)
     {
         return;
     }

     var entry = this.Frame.RemoveBackEntry();
     while (entry != null)
     {
          entry = this.Frame.RemoveBackEntry();
     }

     this.Frame.Navigate(new PageFunction<string>() { RemoveFromJournal = true });
}

2. Пользовательское отслеживание истории:

Вам нужно будет подключиться к событиям NavigationService и самостоятельно вести историю. Затем вы можете заглянуть в историю и выдать NavigationService.RemoveBackEntry() чтобы удалить страницу, к которой" пользователь Б " не имеет доступа.