Domanda

A volte gli esempi più semplici sono i più difficili da trovare. . .

Ho un datagrid con 2 colonne. Una colonna contiene informazioni sul ruolo, l'altra colonna dovrebbe avere una casella combinata con un elenco di utenti disponibili. I dati nella casella combinata è correlato ai dati nella prima colonna. Sono buttato fuori dal fatto che la casella combinata non dispone di un DataContext, solo ItemSource e io non riesco a utilizzare vincolante sia.

Per favore qualcuno può puntare a un semplice esempio che utilizza due diversi set di dati per i dati in una tabella e la casella combinata?

È stato utile?

Soluzione

le colonne del DataGrid non hanno un DataContext, in quanto non vengono mai aggiunti alla struttura ad albero visuale. sembrare un po 'strana, ma dare un'occhiata a vinces blog , la sua ha un buon esempio di layout visivo. una volta che la griglia è disegnata le cellule hanno un contesto dati ed è possibile impostare la sorgente di elementi caselle combinate in loro utilizzando attacchi normali (le risorse non statiche ..)

è possibile accedere al sorgente di elementi della casella combinata in quanto tale

   <dg:DataGridComboBoxColumn>
      <dg:DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
        </Style>
      </dg:DataGridComboBoxColumn.EditingElementStyle>
   </dg:DataGridComboBoxColumn>

qui e anche qui per qualche codice

Altri suggerimenti

Invece di usare DataGridTextColumns si utilizza un DataGridComboBoxColumn invece. Poi si riempie nei dati utilizzando l'ItemsSource, che nell'esempio punti indicati per un'enumerazione esterna nella risorsa statica, ed infine uno lega il risultato all'oggetto bersaglio che eserciterà la selezione dell'utente nel SelectedItemBinding.

<DataGrid.Columns>

<DataGridComboBoxColumn Header="MySelections"  
                        SelectedItemBinding="{Binding MySelectionsProperty}" 
                        ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>

Vedere un esempio completo su MSDN all'indirizzo DataGridComboBoxColumn Classe

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top