Allineamento verticale del contenuto della riga DataGrid

Ho un DataGrid regolare da RTF 4.0 WPF, dove metto i dati da un database. Per rendere lo stile pulito e leggero di DataGrid, utilizzo righe alte / alte e, per impostazione predefinita, DataGrid allinea il contenuto delle righe nella posizione verticale superiore, ma voglio impostare un allineamento verticale centrale.

Ho già provato ad usare questa proprietà

VerticalAlignment="Center" 

nelle opzioni DataGrid, ma non mi aiuta.

Ecco un esempio di codice XAML, che descrive il mio DataGrid senza allineamento verticale centrale:

         

Risultato dell’esecuzione di questo codice:

alt text

Come puoi vedere il contenuto di tutte le righe ha allineamento verticale superiore.

Cosa devo aggiungere per ottenere l’allineamento verticale centrale di ogni contenuto di riga?

Grazie.

Soluzione completa di questo problema:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/8c2aa3b1-d967-41ab-93c2-6c8cb1b7d29d/#488d0cdd-d0c2-469a-bfb6-8ca3d75426d4

In breve, in set di file di stile:

   

Nel file della finestra:

         

Questo ti darà un risultato desiderato:

alt text

Per impostare singoli allineamenti di testo è ansible utilizzare:

    

Il seguente codice allinea verticalmente il contenuto di una cella DataGridTextColumn:

    

Modifica: Sono tornato a questo problema e ho trovato la soluzione seguente per funzionare meglio, centrerà il contenuto di tutte le celle in DataGridTextRows sia orizzontalmente che verticalmente.

      

Puoi anche fare a meno di ignorare il ControlTemplate:

   

Questo funziona per me

     

Il valore dell’attributo VerticalAlignment="Center" centrerà il DataGrid all’interno del suo elemento padre.

Probabilmente vuoi VerticalContentAlignment .

Basandosi sulla risposta di Jamier, il seguente codice ha fatto il trucco per me quando si usano le colonne generate automaticamente:

 Style VerticalCenterStyle = new Style(); public MainWindow() { // This call is required by the designer. InitializeComponent(); VerticalCenterStyle.Setters.Add(new Setter(VerticalAlignmentProperty, VerticalAlignment.Center)); } private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Column is DataGridTextColumn) { ((DataGridTextColumn)e.Column).ElementStyle = VerticalCenterStyle; } }