Skip to main content
 首页 » 编程设计

c#之WPF 绑定(bind)到对象集合,按顺序存储在 C# 中的另一个集合中的 ID 排序

2024年02月24日30emanlee

对于那些喜欢拼图的人:我最近遇到了这个问题,相信一定有更好的解决方案。

考虑:

  • 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; /*...*/} 
}