C# 获取ObservableCollection的父级

C# 获取ObservableCollection的父级,c#,C#,我想引用包含ObservableCollection的对象,方法是仅从集合中推断它。如何在C#中实现这一点 范例 public class Order: INotifyPropertyChanged { public DateTime OrderDate {get; set;} public ObservableCollection<Item> ItemsA {get; set;} public ObservableCollection<

我想引用包含ObservableCollection的对象,方法是仅从集合中推断它。如何在C#中实现这一点

范例

public class Order: INotifyPropertyChanged
{   

    public DateTime OrderDate {get; set;}  

    public ObservableCollection<Item> ItemsA {get; set;}

    public ObservableCollection<Item> ItemsB {get; set;}

    public ObservableCollection<Item> ItemsC {get; set;}

 } 
公共类顺序:INotifyPropertyChanged
{   
public DateTime OrderDate{get;set;}
公共ObservableCollection项a{get;set;}
公共ObservableCollection项SB{get;set;}
公共ObservableCollection项C{get;set;}
} 
代码中的引用

private void ItemsChanged(ObservableCollection<Item> items)
{
    Order newOrder = items.Parent(); // <-- How can this be done?

    if (newOrder.OrderDate <= new DateTime (2016, 6, 30)
    {

    }
}
private void ItemsChanged(可观察到的收集项目)
{

Order newOrder=items.Parent();//扩展ObservableCollection怎么样

public ChildObservableCollection<T> : ObservableCollection<T>
{
    private Order parent { get;set;}
}
公共儿童ObservableCollection:ObservableCollection
{
私有顺序父{get;set;}
}
用法:

public class Order: INotifyPropertyChanged
{   
    public Order()
    {
       ItemsA = new ChildOberservableCollection<Item>();
       ItemsA.parent = this;
       ...
    }

    public DateTime OrderDate {get; set;}  

    public ChildObservableCollection<Item> ItemsA {get; set;}

    public ChildObservableCollection<Item> ItemsB {get; set;}

    public ChildObservableCollection<Item> ItemsC {get; set;}

} 
公共类顺序:INotifyPropertyChanged
{   
公共秩序()
{
ItemsA=新的ChildOberservableCollection();
ItemsA.parent=这个;
...
}
public DateTime OrderDate{get;set;}
public childobserveCollection ItemsA{get;set;}
public ChildObservableCollection ItemsB{get;set;}
public childobserveCollection ItemsC{get;set;}
} 
代码中的引用:

private void ItemsChanged(ChildObservableCollection<Item> items)
{
    Order newOrder = items.parent; // done!

    if (newOrder.OrderDate <= new DateTime (2016, 6, 30)
    {

    }
}
private void ItemsChanged(childobservedcollection items)
{
Order newOrder=items.parent;//完成!

如果(newOrder.OrderDate我刚刚提出了一种linq方法,它在某些情况下也很有用:

(from order in orders
from itemA in order.ItemsA
select new { o = order.Date, i = itemA.ID }).ToList())

你能在这个问题的上下文中添加一个用法的例子吗?谢谢,太好了!这太好了。我唯一要改变的是为
childobservedcollection
添加一个构造函数,它将父对象作为参数,这样你就不能在不指定父对象的情况下构造一个构造函数。多个对象可以包含对单个inst的引用您的
ObservableCollection的重要性
。您希望如何选择正确的“父对象”?使问题复杂化的是,对象引用不是按树排列的-语言中没有父对象的概念。引用可以是循环的,一个对象可以引用自身,两个对象可以相互引用。最好明确说明至少,你希望语言能做到这一点。Sancho Panza的回答很好。谢谢。我认为你让我走上了正确的道路,因为我认为必须始终存在一个Order对象,这使得提供GetParent()方法之类的东西变得很容易。