我目前正在创建一个带有db4o后端的程序。前端是WPF。 现在我遇到了一个小问题,因为db4o activatablelist阻止了来自WPF的observablecollection。
我似乎找不到为什么要让它们以双向模式同步...如果我通过GUI(WPF)添加一个,那么它应该被添加到activatable列表中。
答案 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列表。