Я пытаюсь поместить элемент ItemsControl внутри ListBox, но у меня проблемы с привязкой данных для внутреннего элемента ItemsControl.WPF EF привязка данных: ItemsControl внутри ListBox (основная деталь)
EF Модель:
EmployeeViewModel:
общественного класса EmployeeViewModel { общественного ListCollectionView Сотрудники {получить; задавать; }
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);
}
}
}
Вид:
<Window x:Class="Employee.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Employee"
xmlns:viewModel="clr-namespace:Employee.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<viewModel:EmployeeViewModel/>
</Window.DataContext>
<Grid>
<ListBox x:Name="listEmployees"
ItemsSource="{Binding Employees}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<Run Text="{Binding Lastname}"/>,
<Run Text="{Binding Firstname}"/>
</TextBlock>
<ItemsControl Name="empSkills" ItemsSource="{Binding Skills}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Skill}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
ListBox связывает отлично, но внутренний ItemsControl нет.
В чем может быть проблема? Любая помощь приветствуется.
Выход: System.Windows.Data Ошибка: 17: Не удается получить значение 'навыки' (типа 'ICollection`1') из '' (типа 'Employees_463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EEEE86D779E'). BindingExpression: Path = Навыки; DataItem = 'Employees_463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EEEE86D779E' (HashCode = 29719745); целевой элемент - «ItemsControl» (Name = ''); предназначаться свойство является 'ItemsSource' (тип 'IEnumerable') TargetInvocationException: 'System.Reflection.TargetInvocationException: Der Eigenschaftenaccessor Навыки für дас System.Data.Entity.DynamicProxies.Employees_463D630561C8612AEA43DCC3EC6E2ACDC644CFB28D50978184F80EEEE86D779E-Objekt шляпа folgende Ausnahme verursacht: Die ObjectContext-Instanz Würde verworfen унд канн nicht mehr für Vorgänge verwendet werden, für die eine Verbindung erforderlich ist. ---> System.ObjectDisposedException: Die ObjectContext-Instanz wurde verworfen und kann nicht mehr für Vorgänge verwendet werden, für die eine Verbindung erforderlich ist.
Давайте посмотрим информацию из вашего Output Window. Это должно быть кричать, если есть ошибки привязки. Пожалуйста, отредактируйте свой вопрос и включите его. –