Хорошо, во-первых, есть ли причина, по которой вы используете ListView поверх ListBox?Если вы не уверены, какой из них использовать, я бы использовал ListBox.Присвойте один ListBox вашему списку дилеров, сидящему на вашей модели представления, который будет ObservableCollection, если вы собираетесь добавлять / удалять дилеров.Затем привяжите SelectedValue этого ListBox к свойству Dealer в вашей модели представления, которое называется, возможно, SelectedDealer.
Затем создайте второй ListBox, который показывает список автомобилей для выбранного дилера.Свяжите свойство DataContext автомобильного ListBox с SelectedDealer и привяжите ItemsSource к Cars.Тогда ваш автомобиль ListBox будет привязан к коллекции автомобилей, сидящих у выбранного дилера.
Если вы хотите добавлять / удалять автомобили и обновлять пользовательский интерфейс, вам нужно использовать ObservableCollection.Вы не хотите, чтобы ваши бизнес-объекты возвращали ObservableCollections, поэтому это преобразование должно быть выполнено в ваших моделях представления.Возможно, вы можете иметь свойство ObservableCollection в вашей модели представления с именем SelectedCars и привязать к нему окно списка автомобилей.В установщике для SelectedDealer вы можете сделать что-то вроде:
public ObservableCollection<Car> SelectedCars { get; set; }
private Dealer selectedDealer;
public Dealer SelectedDealer
{
get
{
return this.selectedDealer;
}
set
{
if (this.selectedDealer != value)
{
this.selectedDealer = value;
this.SelectedCars = new ObservableCollection(this.SelectedDealer.Cars);
OnPropertyChanged(() => this.SelectedDealer);
}
}
}
В этом случае вы не установили бы DataContext вашего списка автомобилей на SelectedDealer, DataContext не будет установлен, и представлениеМодель будет использоваться неявно.Затем просто свяжите ItemsSource списка автомобилей со свойством SelectedCars.