2014-02-05 224 views
0

在這種情況下,我有一個objectA的集合,每個集合都有一個屬性objectB的集合。綁定到集合的集合WPF

我正在嘗試正確綁定到列表中的objectB集合的集合,換句話說,我希望列表框包含所有objectA包含的所有objectB。

我嘗試在爲這樣的「{結合objectACollection/objectBCollection}綁定,但是這並不能提供我的結果。

回答

0

您試圖混合呈現和邏輯,我覺得是造成混亂。

如果你有一個集合withing的集合,並且希望以樹形結構顯示它使用Hierarchichal Datatemplate您可以任意選擇自己適合您樹/列表控件如:TreeView, HierarchicalDataTemplate and recursive Data

據我理解你的問題,你是試圖創建objectACollection和obj的聯合ectBCollection並將其顯​​示爲單個列表。我建議你在視圖模型中公開一個創建這個聯合的屬性,而不是在視圖中嘗試它。因爲這顯然是一個屬於ViewModel的邏輯,而不是讓XAML/View找出它。

如果我的理解錯誤,請更正。

+0

你對第二個想法是正確的,我最終創建了這樣一個屬性,我只是希望會有一個相對簡單的前端方法來做到這一點,但令人難以置信的簡單後端方式也可以, 非常感謝。 –

+0

我很高興這很有幫助。 – CarbineCoder

1

我希望列表框包含所有objectB包含的所有objectB。

我想你想從兩個列出了常見的項目,如果是的話,那麼下面的代碼可以幫助你

var commonElements = objectAs.Intersect(objectBs).ToList(); 
0
public class TheDataContext 
{ 
    public TheDataContext() 
    { 
     _listOfAs = new List<A> 
     { 
      new A(), 
      new A(), 
      new A() 
     }; 
     _listOfBs = new ObservableCollection<B>(_listOfAs.SelectMany(a => a.B)); 
    } 

    private List<A> _listOfAs; 

    private ObservableCollection<B> _listOfBs; 
    public ObservableCollection<B> ListOfBs 
    { 
     get 
     { 
      return _listOfBs; 
     } 
    } 

} 

public class A 
{ 
    public A() 
    { 
     B = new List<B> 
     { 
      new B(), 
      new B(), 
      new B() 
     }; 
    } 
    public IEnumerable<B> B { get; set; } 
} 

public class B 
{ 

} 

既然你不提供任何實際的代碼,你的問題有點含糊,我想這就是你的意思。這會給你一個列表,列出你在ListBox中顯示的9個Bs。