Использование переменного типа страницы в Frame.Navigate

1

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

object myPage = page2;

this.Frame.Navigate(typeof(myPage));

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

Любая помощь будет оценена по достоинству. Спасибо.

Изменение: немного разъяснений. Я пишу программу викторины, которая хранит викторины в списке, однако это несколько типов викторин, которые требуют определенных форматов страниц, поэтому мне нужны разные типы страниц. Я сохраняю тип страницы как строку в списке, и список рандомизирован, поэтому я не знаю тип следующей страницы из текущего теста. Двигатель викторины предварительно прочитает следующую викторину в очереди и извлечет тип страницы и создаст переменную для вставки в команду this.Frame.Navigate. Вот где я столкнулся с проблемой. Любые идеи о том, как обойти эту проблему?

благодаря

  • 0
    Я закончил тем, что обошел это, заставив все страницы викторины перейти на страницу результатов, которая затем обработала навигацию в одном месте с помощью оператора switch. В конце концов я собираюсь переключиться на навигационный сервис, чтобы реализовать больше структур MVVM. Спасибо всем за помощь!
Теги:
windows-runtime

1 ответ

0

Нет никакого типа "переменной". var просто позволяет вам писать меньше кода. Компилятор заменяет тип возвращаемого выражения как тип переменной, там нет "магии".

Вы можете написать так:

object myPage;

if (???)
    myPage = new Page1();
else
    myPage = new Page2();

this.Frame.Navigate(myPage.GetType());

Если вы хотите внедрить навигацию на основе пользовательского ввода, вам обязательно нужно использовать оператор if или switch. Вам необходимо передать тип страницы методу Navigate(). Я действительно не понимаю, что вы пытались сделать с приведенным выше кодом. Я бы сделал это, используя простой оператор if.

  • 0
    Я использовал var только потому, что не был уверен в типе переменной. Я думал, что c # был достаточно умен, чтобы понять это, если это было в правильном контексте.
  • 0
    Я попытался использовать объект, как вы сделали, и большинство ошибок исчезли, НО страница не перемещалась.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню