@simply_user

Как подключить к элементу управления источник данных находящейся в экземпляре класса, который в свою очередь находится в ObservableCollection?

Здравствуйте!
Разрабатываю программу, в которой пользователь сможет подключаться к определённому клиенту (такой же программе) в локальной сети или через сеть Интернет и загружать свои файлы или скачивать имеющиеся. Отображение списка клиентов осуществляется с помощью списка ListBox. В программе это выглядит следующим образом: в MainViewModel имеется коллекция ObservableCollection элементов типа RemoteClientViewModel привязанная к ListBox. RemoteClientViewModel в свою очередь является ViewModel'ю для класса модели RemoteClient. View в данном случае - элемент списка ListBox. В окне имеется также ListView для отображения списка файлов удалённого клиента. И в классе RemoteClientViewModel по идее должна быть коллекция с информацией об этих файлах: размер, тип, дата изменения и прочее.

Вопрос заключается в том, как подключить эту коллекцию к элементу ListView? При условии, что сама эта коллекция будет находится в экземпляре класса RemoteClientViewModel. А он в свою очередь в коллекции, которая является источником данных для ListBox и находится в MainViewModel. Кроме того, мне нужно чтобы при клике на элемент списка ListBox в ListView отображался соответствующий этому клиенту (т.е той ViewModel которая подключена к этому элементу) список файлов.

Как это всё сделать? Буду очень благодарен за помощь.
  • Вопрос задан
  • 253 просмотра
Решения вопроса 2
Если вы хотите показывать информацию для выбранного RemoteClient, то можно в MainViewModel добавить поле SelectedRemoteClient и забиндить его на SelectedItem в ListBox(которые содержит RemoteClient). Ну и потом юзать его в ListView.
Ответ написан
Nipheris
@Nipheris Куратор тега C#
При условии, что сама эта коллекция будет находится в экземпляре класса RemoteClientViewModel.

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

Кроме того, мне нужно чтобы при клике на элемент списка ListBox в ListView отображался соответствующий этому клиенту (т.е той ViewModel которая подключена к этому элементу) список файлов.

Всё очень просто - сделайте в MainViewModel свойство SelectedЧТОТО, в пару к вашей коллекции. Например, если коллекция это RemoteClients, то и свойство - SelectedRemoteClient. Забиндите SelectedItem ListBox-а к этому свойству. Разумеется, не забудьте его правильно реализовать, с NotifyPropertyChanged. Затем привяжите ItemsSource ListView-хи к SelectedRemoteClient.Files, где Files это коллекция с информацией о файлах. Если не будет работать, пишите, попробуем другой вариант.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы