У меня есть регион с несколькими экземплярами одного и того же представления со своими собственными свойствами. Регион представляет собой VirtualizingStackPanel, использующий пользовательский адаптер региона. Это работает для добавления и удаления. Однако мне нужно, чтобы регион «обновлялся» после сортировки представлений через SortComparison региона.
Представления успешно отсортированы внутри RegionManager, однако регион не обновляется, чтобы отразить новый порядок представлений. Region.Views.CollectionChanged запускается, но в отличие от Add и Remove, Reset не передает коллекцию старых или новых представлений. Как обновить регион, чтобы отобразить новый порядок представлений в том виде, в котором они находятся в RegionManager.
protected override void Adapt(IRegion region, VirtualizingStackPanel regionTarget)
{
region.Views.CollectionChanged += (s, e) =>
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (FrameworkElement element in e.NewItems)
{
regionTarget.Children.Add(element);
}
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (FrameworkElement CurrentElement in e.OldItems)
{
regionTarget.Children.Remove(CurrentElement);
}
}
else if (e.Action == NotifyCollectionChangedAction.Reset)
{
}
};
}