对于那些喜欢拼图的人:我最近遇到了这个问题,相信一定有更好的解决方案。
考虑:
- Foo 对象的 ObservableCollection,称为 foos。
- Foo 包含一个字符串 ID 字段
- 我无法控制foos
- foos 将会改变
然后:
- 我有另一个名为sortLikeThis的集合
- sortListThis 包含字符串
- 字符串是按foos 显示顺序排列的 ID
加上:
- foos 中可能有对象的 ID 不在 sortLikeThis 中。这些需要放在最后。
- 同样,sortLikeThis 中可能存在未出现在 foos 中的字符串。
有没有一种很好的方法可以按照 sortLikeThis 中的 ID 定义的顺序绑定(bind)到 foo 中的 Foo 对象并在 wpf 中显示?
请您参考如下方法:
听起来像是自定义可观察集合的工作,它实现了 IEnumerable 并且有一个非常小的枚举器(aaah,yield)来处理自定义排序的逻辑。
public class SortFoosLolThx : ObservableCollection<Foo> {
public IList<string> SortList {/*...*/}
/*...*/
public override IEnumerator<Foo> GetEnumerator() { /*...*/ yield foo; /*...*/}
}
