db4o activatablelist против wpf наблюдаемой коллекции - PullRequest
0 голосов
/ 04 марта 2011

В настоящее время я создаю программу с серверной частью db4o. Внешний интерфейс WPF. Теперь у меня небольшая проблема, потому что список активаций db4o блокирует наблюдаемую коллекцию из WPF.

Кажется, я не могу найти причину, по которой их можно синхронизировать в двухуровневом режиме ... Если я добавлю их через GUI (WPF), их следует добавить в список activatablelist.

1 Ответ

1 голос
/ 04 марта 2011

Ну, я не эксперт по 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-списков.

...