У меня есть CollectionViewSource
, в котором даты сгруппированы по годам и месяцам. Даты отображаются в TreeView
(точно в RadTreeView
).
Целью является изменение выбранной даты без воссоздания представления (не вызывайте метод Refresh
).
Для этого я реализовал IEditableObject
в модели представления даты и изменил дату так:
var selectedDate = SelectedDate;
var editableCollectionView = Dates.View as IEditableCollectionView;
if (null != editableCollectionView && !editableCollectionView.IsEditingItem)
{
editableCollectionView.EditItem(selectedDate);
selectedDate.Date = dt.Date;
editableCollectionView.CommitEdit();
}
Но в этом случае TreeView
потерял выделение, и мне нужно снова выбрать «выбранный элемент», что приводит к обновлению данных, ограниченных выбранной датой.
Как я могу решить эту проблему? Отлично, используя MVVM
способ.
UPDATE:
Если дата в группе одна, изменение даты вызывает сворачивание элемента, в котором она содержится.
ОБНОВЛЕНИЕ 2:
Может быть, я не должен использовать свойство SelectedDate и работать только с IsSelected и IsExpanded?