Я в настоящее время осуществляет приложение, которое отображает иерархии с помощью ListBoxes
(пожалуйста, не предлагают использовать TreeView
, ListBoxes
необходимы).WPF MVVM иерархии выбран пункт
Похоже, что in the article: WPF’s CollectionViewSource (with source code).
Классы:
public class Mountains : ObservableCollection<Mountain>
{
public ObservableCollection<Lift> Lifts { get; }
public string Name { get; }
}
public class Lift
{
public ObservableCollection<string> Runs { get; }
}
В примере используется CollectionViewSource
экземпляров (см XAML), чтобы упростить конструкцию. Экземпляр Mountains
класс - это DataContext
для окна.
Проблема: Я хотел бы, что Mountains
класса иметь SelectedRun
свойство и оно должно быть установлено в настоящее время выбран пробег.
public class Mountains : ObservableCollection<Mountain>
{
public ObservableCollection<Lift> Lifts { get; }
public string Name { get; }
public string SelectedRun { get; set; }
}
Возможно, я пропустил какой-то принципиальный принцип, но как я могу достичь этого?
Большое спасибо! Это именно то, что я хочу! Кстати, что, если у меня есть 'ICollectionView' вместо' ObservableCollection'? Я пробовал «ICollectionView», и решение отлично работает. Я из любопытства, есть ли способ получить 'SelectedRun' на' MountainsViewModel' без привязки 'ListBox' SelectedItem'?Может быть, как-то использовать свойства/события 'ICollectionView'? –
WPF автоматически обертывает любую коллекцию в соответствующей реализации ICollectionView внутри, поэтому в конце нет большой разницы. Если SelectedRun является свойством зависимостей элемента управления (а не модели представления), вы можете привязать его к «Горам/Лифтам/Бегам /», обратите внимание на конец «/», ... возможно, я не пробовал. – Phil
Вы можете принять ответ, если хотите :-) – Phil