Есть несколько способов сделать это, но использование типов Caliburn Conductor
и Screen
наиболее целесообразно. Я предполагаю, что один вопрос будет в том, что вы собираетесь делать с этими данными, когда получите их от пользователя? Будет ли он сохранен или временно сохранен как состояние приложения, пока вы будете получать дополнительную информацию от пользователя на разных экранах?
В любом случае, имеет смысл использовать один экранный проводник (Conductor<T>
), который будет содержать ссылки на каждый из трех типов экранов поиска платежей. Создайте модель представления и представление для каждого из экранов платежей, создайте экземпляр и сохраните ссылку на каждый из них в вашем Conductor
(или, что еще лучше, вставьте их как зависимости в конструктор вашего проводника, или введите тип фабрики, который их создает).
Согласно соглашениям, ваш комбинированный список, если он вызывается Payment
, автоматически свяжет выбранное значение со свойством SelectedPayment
вашего проводника. В установщике этого свойства вы можете вызвать метод ActivateItem
для соответствующей ссылки на модель платежного представления на основе значения SelectedPayment
.
Предположительно, у вас на проводнике будет кнопка «ОК» или аналогичная, которая может извлекать данные из текущей активной модели (ActiveItem
). Каждая модель представления платежей может реализовывать интерфейс, например, с помощью метода GetPaymentDetails
, и, возможно, это может вернуть сериализованную форму данных, готовых для сохранения.
Следует также упомянуть в своем представлении проводников (предположим, что оно называется ShellView.xaml), вы можете использовать ContentControl
для отображения текущей модели представления платежей (и чтобы Caliburn вставлял соответствующий вид и выполнял привязку), на который ссылается как ActiveItem
:
<ContentControl x:Name="ActiveItem" />
Обратите внимание, что вы можете быть немного более любопытным и дать вашему комбинированному списку (немного двусмысленное) имя Items
и связать его ItemsSource
с коллекцией моделей просмотра платежей, которая может быть коллекцией Items
на Conductor<T>.Collection.OneActive
. Caliburn автоматически свяжет выбранное значение (модель представления платежа) со свойством ActiveItem
на вашем проводнике, и поэтому ваше текущее представление будет автоматически переключаться при изменении значений в выпадающем списке.