private void SelectedAcObject_Outdated(object sender, EventArgs e) {
SetCurrentValue(SelectedSourceProperty, null);
var oldItem = _selectedWrapper.Value;
var id = (sender as AcObjectNew)?.Id;
if (id == null) return;
var newItem = ItemsSource.OfType<AcItemWrapper>().GetByIdOrDefault(id);
if (oldItem != null && newItem == oldItem) {
CurrentObject = newItem.Loaded();
} else if (newItem != null) {
ItemsSource.MoveCurrentTo(newItem);
} else {
var replacement = ItemsSource.OfType<AcItemWrapper>().FirstOrDefault(x => (x.Value as AcCommonObject)?.PreviousId == id);
if (replacement != null) {
ItemsSource.MoveCurrentTo(replacement);
return;
}
if (CurrentObject != null) {
SetCurrentValue(SelectedSourceProperty, AcObjectsUriManager.GetUri(CurrentObject));
} else {
ItemsSource.MoveCurrentToFirst();
}
}
}