Переход от View to View в WPF

94
18

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

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

Приложение, которое я разрабатываю, представляет собой киоск, который шаг за шагом запускает серию экранов, основанных на пользовательском вводе и сканировании. Каков хороший способ разделить и сконструировать эти переходы?

Например, у меня есть экран приветствия, который ждет, пока пользователь сканирует свой идентификатор. Как только он получит свой идентификатор, он отобразит новое окно или вид или все, что вы хотите назвать, попросив пользователя подтвердить отсканированную информацию и нажать кнопку "Продолжить".

Затем он переходит на новый экран, на котором пользователь делает выбор и так далее, и после нескольких "экранов" результат печатается и сбрасывается для следующего пользователя.

Есть ли хорошие примеры внедрения этого в Интернете?

EDIT: приложение полноэкранное. Мой первый инстинкт состоял в том, чтобы просто спроектировать каждый экран как отдельное окно и показать() их один за другим, но это кажется неряшливым, и я предполагаю, что это не лучший способ.

Еще одна вещь, которую я пробовал, заключалась в том, чтобы каждый пользователь смотрел UserControl и загружал их на одной главной панели, один за другим, на основе этого шага. Еще раз, не уверен, что это лучший метод.

спросил(а) 2020-04-03T23:59:36+03:00 6 месяцев, 2 недели назад
1
Решение
70

Добавьте элемент управления контентом в свой MainView, как показано ниже,

<ContentControl Content="{Binding CurrentView}"/>

Создайте DataTemplates для разных видов, как показано ниже,

<DataTemplate x:Key="Viewer"  DataType="{x:Type VM:TiffImageViewerViewModel}">//ViewModel Name
<view:TiffViewer/>//View Name
</DataTemplate>

MainViewModel

public object CurrentView { get; set; }

private TiffImageViewerViewModel _TiffImageViewerViewModel;
public TiffImageViewerViewModel TiffImageViewerViewModel
{
get
{
return _TiffImageViewerViewModel;
}
set
{
_TiffImageViewerViewModel = value;
}
}

Создайте object и назначьте его в CurrentView. Эта ссылка дает больше ясности

ответил(а) 2020-04-04T00:15:41.914196+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема