2014-04-17 6 views
0

J'ai deux ListBox. J'essaie d'établir une relation maître-détail entre eux. Ainsi, TYPE_MASTER et TYPE_DETAIL sont tous les deux des entités EF. TYPE_MASTER a une propriété appelée TYPE_DETAIL qui est une collection d'entités TYPE_DETAIL associées. ItemsSource de ListBox1 est lié à une ObservableCollection, ItemsSource de ListBox2 est lié à la propriété TYPE_DETAIL de SelectedItem de ListBox1. Le problème est que SelectedItem renvoie un objet, plutôt qu'un TYPE_MASTER, donc ma liaison pour ListBox2 m'indique qu'il ne peut pas résoudre la propriété TYPE_DETAIL dans le contexte de données de type object. Comment lier les itemssource de ListBox2 à la collection de TYPE_DETAILs sur SelectedItem de ListBox1? Remarque - Je ne peux pas référencer directement les types d'objet des entités, car elles résident dans la couche d'accès aux données, et nous appliquons une politique stricte à la création de dépendances entre la couche de présentation et la couche d'accès au contenu.Maître-détail dans WPF utilisant Entity Framework

Mon code:

<StackPanel Name="SpMaster" Orientation="Vertical" Grid.Row="0" ToolTip="{Binding Source={x:Static robertGlobals:Messages.SelectMaster}}"> 
     <TextBlock Name="TxtbMaster" Style="{StaticResource HeadingFourBrown}" Text="Masters" Grid.Row="0"></TextBlock> 
     <ListBox Name="ListMaster" ItemsSource="{Binding PageModel.PageSelection.Masters}" Style="{StaticResource ClearListbox}" 
       DisplayMemberPath="DESCRIPTION"> 
     </ListBox> 
    </StackPanel> 
    <StackPanel Name="SpDetail" Orientation="Vertical" Grid.Row="1" ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragDetail}}"> 
     <TextBlock Name="TxtbDetails" Style="{StaticResource HeadingFourBrown}" Text="Available Details" Grid.Row="0"></TextBlock> 
     <ListBox Name="ListDetails" ItemsSource="{Binding ElementName=ListMaster, Path=SelectedItem.TYPE_DETAIL}" 
       Style="{StaticResource ClearListbox}" DisplayMemberPath="NAME"></ListBox> 
    </StackPanel> 

Répondre

0

La réponse est simple: tout est correctement configuré, sauf que le DisplayMemberPath fait référence au mauvais nom de domaine. Corrigé cela et tout s'est éclairci. Ce sont les choses simples.