MVVM - Как открыть окно на основе выбранного элемента из списка? - PullRequest
6 голосов
/ 28 декабря 2010

Я довольно новичок в мире WPF и MVVM и провел последние несколько дней, загружая как можно больше учебников и читая как можно больше!

Однако я изо всех сил пытаюсь реализовать сочень простая и общая концепция MVVM, и я отчаянно нуждаюсь в некоторой помощи - и, возможно, даже в качестве примера :-)

У меня есть основы MV-VM, командование и даже обмен сообщениями;но как на самом деле я могу открыть новое окно и установить для этих окон ViewModel выбранный элемент списка?

Позвольте мне объяснить: у меня есть модель с именем Client, и у нее есть некоторые свойства, а затем у меня ViewModel, котораяполучает все мои клиенты и сохраняет их в коллекции ObservableCollection. У меня есть экран, на котором я отображаю имя и фамилию в списке и позволяю пользователю фильтровать и выполнять поиск.

Все вышеперечисленное работает отлично.

Когда пользователь выбирает элемент, я хотел бы открыть редактируемый экран «подробный вид клиента» этого конкретного клиента.ViewModel этого подробного экрана необходимо каким-то образом привязать к выбранному элементу (если это имеет смысл);или мне нужно иметь возможность передать параметр в ViewModel недавно открытого экрана.На самом деле, если бы пользователь мог одновременно открывать несколько экранов с подробностями и редактировать несколько клипов, было бы здорово!

Если кто-нибудь может дать мне хороший пример или указать мне правильное направление, я действительно будуотлично!

Большое спасибо, Брендан

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Проще говоря:

//Create the Client Detail form
frmClientDetails frm = new frmClientDetails();
frm.Owner = this;
var ViewModel = new ClientDetailViewModel((Client)lstFoundClients.Items.CurrentItem);
frm.DataContext = ViewModel;
frm.Show();
2 голосов
/ 28 декабря 2010

Я бы добавил событие в ListBox.SelectionChanged, которое выполняет следующие действия:

  • Создает новый диалог и DialogViewModel
  • Связывает свойство DialogViewModel.EditableContentProperty с SelectedItem ListBox
  • Dialog.DataContext = DialogViewModel
  • Dialog.ShowDialog ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...