Я пытаюсь реализовать некоторую сортировку со списком с помощью CollectionViewSource. Это поле со списком фактически является частью шаблона данных и повторяется в виде списка. Мой первый подход, похоже, работал (с использованием CollectionViewSource), но все мои комбинированные поля использовали один и тот же контекст данных. Это делало это так, когда каждый другой ящик был изменен, все остальные изменились, чтобы отразить - не желаемый побочный эффект.Связывание с CollectionViewSource
Я решил просто отступить и попытаться реализовать базовое поле со списком (не внутри шаблона данных), используя inline xaml для указания CollectionViewSource (в отличие от создания cvs как статического ресурса). Мне не удалось успешно отобразить мои данные. Вероятно, я ошибаюсь, поскольку я все еще новичок в WPF.
Вот XAML для моего поля со списком:
<ComboBox>
<ComboBox.ItemsSource>
<Binding>
<Binding.Source>
<CollectionViewSource Source="{Binding Path=Configurations}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="AgencyName" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Binding.Source>
</Binding>
</ComboBox.ItemsSource>
</ComboBox>
DataContext элемента управления пользователем, где живет эта выпадающие привязан к объекту, который имеет ObservableCollection под названием Конфигурация и каждая конфигурация имеет свойство AgencyName , Я проверил, что это работает отлично, используя стандартную привязку без cvs, поэтому я знаю, что все в порядке.
Любая помощь будет принята с благодарностью, поскольку у меня закончились оправдания моему боссу :). Я также не хочу, чтобы нужно было сбрасывать код и выполнять сортировку позади кода (что я мог бы при создании ObservableCollection, но IMHO, который нарушает принцип DRY).
Ah IsSynchronizedWithCurrentItem работает как шарм. Он не синхронизируется со списком и не препятствует привязке к свойству ModelView. Я только что закончил проверять это. Это решает мою проблему с элегантностью. Я не могу просить больше, спасибо. – SRM
Ты, человек, мне показалось, что я столкнулся с ограничением WPF, которое требовало использования копии всего средства просмотра для каждого истребителя Template. Было бы сложно даже описать проблему. –
PS. Весьма странно, что это поведение по умолчанию WPF или, по крайней мере, дефолт в шаблонах, но хорошо. –