2013-06-15 7 views
5

Ho un'applicazione WPF/entità framework, il mio modello ha studenti, entità di classe c'è un'associazione/relazione molti a molti tra studente e classe (lo studente può avere molte classi e classe hanno molti studenti)Molti a molti (Studenti, esempi di classi) Datagrid xaml binding

studente [Id, Nome, classi (proprietà di navigazione)] classi [Id, Titolo, studenti (di proprietà di navigazione]

in questo caso l'Entity framework non mostrano la tabella join/relation

ih un 2 DataGird come dettagli principali, la griglia studenti è il master e le classi sono dettagli

come posso impostare il binding alle classi gird (i dettagli gird) in modo da poter aggiungere e rimuovere classi allo studente selezionato?

quello che voglio è quello di selezionare uno studente dalla griglia master e aggiungere o rimuovere le sue lezioni

questo è il mio classi cinti

<DataGrid x:Name="classesDataGrid" 
         AutoGenerateColumns="False" 
         EnableRowVirtualization="True" 
         Height="200" 
         ItemsSource="{Binding Source={StaticResource studentClassesViewSource}}" 
         RowDetailsVisibilityMode="VisibleWhenSelected" 
         Width="380"> 
       <DataGrid.Columns> 


        <DataGridComboBoxColumn Header="Class Name From Combo" 
              Width="*" 

              ItemsSource="{Binding Source={StaticResource classViewSource}}" 
              DisplayMemberPath="Name" 

              SelectedItemBinding="{Binding Students}" 

              /> 
        <!--<DataGridTextColumn x:Name="durationColumn" 
             Binding="{Binding Duration}" 
             Header="Duration" 
             Width="SizeToHeader" />--> 

       </DataGrid.Columns> 

Questo scenario funziona bene quando il rapporto è uno a molti, ma non potevo farlo funzionare per molti o molti rapporti.

più su questo post here

+0

H per favore !! Qualcuno ??? –

+0

Pochi anni dopo ho anche questo problema +1 – Tuco

risposta

0

non sono sicuro se ho ottenuto il vostro problema in modo corretto: Volete sapere come risolvere quel dettaglio maestro problema vincolante in XAML?

Se si dispone di uno studente con una collezione di classi come una proprietà di navigazione si può semplicemente utilizzare una griglia per gli studenti, ad esempio:

<DataGrid x:Name="masterGrid" 
      ItemsSource="{Binding Path=Students}" /> 

e un altro per i dettagli (le vostre classi - o viceversa, doesn 't materia): In questo caso vi suggerisco di un nome di elemento vincolante

<DataGrid x:Name="detailsGrid" 
      DataContext="{Binding ElementName=masterGrid, Path=SelectedItem}" 
      ItemsSource="{Binding Path=Classes}" /> 

Speranza che ha aiutato (almeno per l'accensione iniziale) ...

+1

scusa per la risposta in ritardo, il mio problema è come aggiungere elementi alla griglia di dettagli ?, questo post lo descrive [link] (http://social.msdn.microsoft.com/Forums/vstudio/it-US/74ca2429-cb22-4b24-ae22-01a842b7d8c2/many-to-many-students-classes-example-datagridcomboboxcolumn-binding-problem) –

+0

Vuoi veramente passare dagli studenti alle classi e viceversa? Non è sufficiente avere studenti con lezioni (rimuovere la collezione di studenti dalle classi)? – Stefan