Я хочу, чтобы модель представления моего основного окна информировала пользовательский элемент управления о том, что сортировка ObservableCollection
(свойство модели представления) изменилась через событие.WPF Маршрутизированное событие: MainWindow to UserControl
Использование общего/статического метода не является моим решением, так как модель основного окна не должна знать о пользовательском элементе управления (который сам привязан к одной и той же модели представления).
Элемент управления списком использует ObservableCollection
в качестве источника для своих элементов, и этот сценарий - просто заставить ScrollIntoView
в списке.
Я знаю концепцию RoutedEvents
и туннелирование, которое, я думаю, может быть моим решением, но я не совсем уверен, что это единственный вариант. Маршрутизация таким образом - совершенно новая концепция для меня.
Я просмотрел this example, но мне нужны специальные события, предположительно, в отличие от существующих событий маршрутизации.
Спасибо.
Благодарим вас за комментарий. В этом случае ObservableCollection не изменяется. Я просто использую меню на MainWindow для сортировки указанного ObservableCollection с помощью: ListCollectionView.SortDescriptions.Add() После этого я хочу заставить свой пользовательский элемент управления использовать ScrollIntoView. – miriyo
Прежде всего, вам не следует сортировать коллекцию в MainWindow, вместо этого сам UserControl должен отвечать на меню. приведенный выше код может быть использован как и для 'ListBox.ItemsSource':' ICollectionView view = (ICollectionView) CollectionViewSource.GetDefaultView (myListBox.ItemsSource); ' – AnjumSKhan
Помимо того, что сбор должен быть отсортирован, я все еще не вижу, как мой UserControl знает о событии, произошедшем в MainWindow. – miriyo