【问题标题】:How to Databind Multiple Layers of Collections?如何对集合的多层进行数据绑定?
【发布时间】:2024-04-13 18:35:01
【问题描述】:

假设:

<manufacturer name="A">
  <phone>1</phone>
  <phone>2</phone>
</manufacturer>
<manufacturer name="B">
  <phone>3</phone>
  <phone>4</phone>
</manufacturer>

有没有一种巧妙的方法将其数据绑定到 ItemsSource,以便将所有电话显示为 1、2、3、4?如果我只是使用 Expression Blend 生成它,它会给出

DataContext="{Binding manufacturerCollection[0].phoneCollection}"

它只给出 1、2。更好的是,有没有办法在 WP7 Silverlight Toolkit 的 ListPicker 中对它们进行分组?

【问题讨论】:

    标签: .net wpf windows-phone-7 data-binding wpftoolkit


    【解决方案1】:

    您可以创建一个新属性并使用 Linq 来“扁平化”您的集合,而不是绑定到制造商集合:

    public IEnumerable<Phone> Phones { get { return manufacturerCollection.SelectMany(m => m.phoneCollection); }}
    

    (将“电话”替换为 phoneCollection 中存储的对象的类型)

    【讨论】: