在这种情况下,我有一个objectA集合,每个集合都有一个属性,它是objectB的集合。
我正在尝试正确绑定到objectB集合的集合以呈现到列表中,换句话说,我希望列表框包含所有objectAs包含的所有objectB。
我尝试绑定这样的“{Binding objectACollection / objectBCollection}”,但这并没有为我提供结果。
答案 0 :(得分:1)
我希望列表框包含所有的所有objectB objectAs包含。
我认为您需要来自两个列表的常见项目,如果是这种情况,那么下面的代码可以帮助您
var commonElements = objectAs.Intersect(objectBs).ToList();
答案 1 :(得分:0)
你正试图混合演示和逻辑,我觉得这会导致混乱。
如果您有一个包含集合的集合,并希望在树结构中显示它,请使用Hierarchichal Datatemplate。您可以使用适合您的树/列表控件。例如:TreeView, HierarchicalDataTemplate and recursive Data
据我了解您的问题,您正在尝试创建objectACollection和objectBCollection的联合,并将其显示为单个列表。我建议你在视图模型中公开一个属性来创建这个联合,而不是在View中尝试它。因为这显然是一个属于ViewModel的逻辑,而不是让XAML / View来解决它。
如果我的理解是错误的,请更正。
答案 2 :(得分: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个B的列表。