2014-02-05 264 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。