Хорошо, я обнаружил радость CollectionView.Предлагал именно то, что мне было нужно, и было невероятно легко реализовать.Я был поражен не только тем, насколько легко это реализовать, но мне удалось вырезать больше строк кода, чем я использовал для его реализации.
Я реализовал общедоступный CollectionViewSource
Public ListingDataView As CollectionViewSource
В моем главном окне я реализовал его следующим образом:
<CollectionViewSource x:Key="ListingDataView" />
и привязал к нему свою сетку верхнего уровня:
<Grid DataContext="{Binding Source={StaticResource ListingDataView}}">
В моем запуске приложения я установил Source CollectionView
AppLocal.ListingDataView = CType(Application.Current.MainWindow.Resources("ListingDataView"), CollectionViewSource)
AppLocal.ListingDataView.Source = Listings
Следующая часть, которая произвела на меня наибольшее впечатление, - это реализация моего пользовательского элемента управления.Я вспомнил, что UserControl наследуется от главного окна, поэтому у него уже есть доступ к CollectionView, поэтому я выбрал отдельную привязку класса и метода в пользу этого:
<ListBox ItemsSource="{Binding Path=MediaItems}" VerticalAlignment="Top" IsSynchronizedWithCurrentItem="True" />
Теперь, когда я хочу установить CurrentИндекс списка, я просто называю это:
AppLocal.ListingDataView.View.MoveCurrentToPosition(AppLocal.CurrentProperty)
Через несколько миллисекунд пользовательский интерфейс обновляется автоматически.
Готово !!