绑定到集合的集合WPF

时间:2014-02-05 17:17:36

标签: c# wpf binding

在这种情况下,我有一个objectA集合,每个集合都有一个属性,它是objectB的集合。

我正在尝试正确绑定到objectB集合的集合以呈现到列表中,换句话说,我希望列表框包含所有objectAs包含的所有objectB。

我尝试绑定这样的“{Binding objectACollection / objectBCollection}”,但这并没有为我提供结果。

3 个答案:

答案 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的列表。

相关问题