db4o activatablelist vs wpf observablecollection

时间:2011-03-04 13:29:32

标签: wpf observablecollection db4o

我目前正在创建一个带有db4o后端的程序。前端是WPF。 现在我遇到了一个小问题,因为db4o activatablelist阻止了来自WPF的observablecollection。

我似乎找不到为什么要让它们以双向模式同步...如果我通过GUI(WPF)添加一个,那么它应该被添加到activatable列表中。

1 个答案:

答案 0 :(得分:1)

嗯,我不是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列表。