C# WPF EF数据绑定:列表框内的ItemsControl(主详细信息)

C# WPF EF数据绑定:列表框内的ItemsControl(主详细信息),c#,wpf,entity-framework,binding,C#,Wpf,Entity Framework,Binding,我正试图将ItemsControl放置在列表框中,但内部ItemsControl的数据绑定有问题 EF模型: EmployeeViewModel: 公共类EmployeeViewModel { public ListCollectionView员工{get;set;} public EmployeeViewModel() { LoadData(); } private void LoadData() { using (testdbEntities context = new

我正试图将ItemsControl放置在列表框中,但内部ItemsControl的数据绑定有问题

EF模型:

EmployeeViewModel:

公共类EmployeeViewModel { public ListCollectionView员工{get;set;}

public EmployeeViewModel()
{
    LoadData();
}

private void LoadData()
{
    using (testdbEntities context = new testdbEntities())
    {
        IEnumerable<Employees> query = (from e in context.Employees
                                        orderby e.Lastname
                                        select e);

        ObservableCollection<Employees> emp = new ObservableCollection<Employees>(query);
        Employees = new ListCollectionView(emp);
    }
}
publicEmployeeViewModel()
{
LoadData();
}
私有void LoadData()
{
使用(testdbEntities context=newtestdbentities())
{
IEnumerable查询=(来自context.Employees中的e)
orderby e.Lastname
选择e);
ObservableCollection emp=新的ObservableCollection(查询);
员工=新列表集合视图(emp);
}
}
}

视图:


,
ListBox可以完美绑定,但内部ItemsControl不能

有什么问题吗? 谢谢你的帮助

输出:
System.Windows.Data错误:17:无法从“”获取“技能”值(类型“ICollection”“1”)(类型“Employees_463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EE86D779E”)。绑定表达式:路径=技能;DataItem='Employees_463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EE86D779E'(哈希代码=29719745);目标元素是“ItemsControl”(名称=“”);目标属性为“ItemsSource”(类型为“IEnumerable”)TargetJournationException:'System.Reflection.TargetJournationException:Der Eigenschaftenaccessor Skills für das System.Data.Entity.DynamicProxies.EmployeesǏu 463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EE86D779E-Objekt hat hat folden Ausnahme verursacht:Die ObjectContext Instances wurde verworfen and Kannicht mehr für Vorgäänge维文德·沃登(verwendet werden),他是一名医生。-->System.ObjectDisposedException:Die ObjectContext Instanz wurde verworfen and kann nicht mehr für Vorgänge verwendet werden,für Die eine verbinding erforderlich ist.

Firstname和Lastname的属性肯定在内部视图模型中,而不是员工的主视图模型吗?您不需要将datacontext更改为内部/详细视图模型吗?

阅读输出,我找到了解决方案。谢谢林恩的提示

问题在于LoadData()中using块的使用。可以加载员工数据,但可以防止在内部ItemsControl中延迟加载技能数据

my EmployeeViewModel的新工作版本

    public class EmployeeViewModel
    {
        private testdbEntities context = new testdbEntities();

        public ListCollectionView Employees { get; set; }

        public EmployeeViewModel()
        {
            LoadData();
        }

        private void LoadData()
        {
            IEnumerable<Employees> query = (from e in context.Employees
                                            orderby e.Lastname
                                            select e);

            ObservableCollection<Employees> emp = new ObservableCollection<Employees>(query);
            Employees = new ListCollectionView(emp);
        }

    }
}
公共类EmployeeViewModel
{
私有testdbEntities上下文=新的testdbEntities();
public ListCollectionView员工{get;set;}
公共雇员视图模型()
{
LoadData();
}
私有void LoadData()
{
IEnumerable查询=(来自context.Employees中的e)
orderby e.Lastname
选择e);
ObservableCollection emp=新的ObservableCollection(查询);
员工=新列表集合视图(emp);
}
}
}

让我们看看输出窗口中的信息。如果有绑定错误,这应该是尖叫。请回答您的问题并将其包括在内。ItemsControl会为子项设置新的DataContext。
    public class EmployeeViewModel
    {
        private testdbEntities context = new testdbEntities();

        public ListCollectionView Employees { get; set; }

        public EmployeeViewModel()
        {
            LoadData();
        }

        private void LoadData()
        {
            IEnumerable<Employees> query = (from e in context.Employees
                                            orderby e.Lastname
                                            select e);

            ObservableCollection<Employees> emp = new ObservableCollection<Employees>(query);
            Employees = new ListCollectionView(emp);
        }

    }
}