Ну, я не эксперт по WPF и связям с данными.Но я бы использовал событие CollectionChanged наблюдаемой коллекции, чтобы обновить активируемую коллекцию.Затем вы упаковываете эту функциональность в хороший класс / метод утилиты, который будет использоваться там, где это необходимо.
Идея состоит в том, чтобы сделать что-то вроде этого:
IList<T> regularList = // method-parameter, or from somewhere else;
ObservableCollection<T> observableCollection
= new ObservableCollection<T>(regularList);
observableCollection.CollectionChanged +=
(sender, eventArgs) =>
{
if (null != eventArgs.NewItems)
{
for (int i = 0; i < eventArgs.NewItems.Count; i++)
{
regularList.Insert(i + eventArgs.NewStartingIndex, (T)eventArgs.NewItems[i]);
}
}
if (null != eventArgs.OldItems)
{
for (int i = 0; i < eventArgs.OldItems.Count; i++)
{
regularList.RemoveAt(i + eventArgs.OldStartingIndex);
}
}
};
Я полагаю, что такая вещь существует в других WPFпроекты тоже, для обычных списков / ORM-списков.