Для меня, чтобы решить эту проблему, существуют различные методы.
1) Реализовать событие selectedindexbound в просмотре списка. когда событие вызывается, проверьте все предметы и переместите спальные предметы наверх.
2) создать класс, наследуемый, например, от ObservableCollection. привязать выбранное свойство списка к свойству bool объектов в коллекции (checkobject). Когда свойство bool (из checkobject) изменяется (с помощью события propertyloaded), сдвиньте объект вперед (за теми, у которых bool = true). Таким образом, вы можете сохранить реализацию в классе коллекции.
3) Если коллекция доступна только для чтения, можно использовать сортировку по свойству bool. Однако это означает, что объект должен быть известен
4) Если коллекция неизвестна, можно использовать пользовательскую сортировку. Одна ссылка «Применить пользовательское правило сортировки к сетке данных wpf»