2012-08-14 10 views
15

Primo! So che può sembrare una specie di dup tuttavia non lo è.Come rendere l'ultima colonna del DataGrid occupare tutto lo spazio a sinistra?

Ho una griglia come modello dati per DataGrid.RowDetails. Ha tre colonne: due con Width="Auto" e 3d con Width="*"

<DataTemplate x:Key="NotEmptyDistributionsTemplateKey"> 
    <DataGrid ItemsSource="{Binding SoftwareVersionDistributions}" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     CanUserReorderColumns="False" 
     CanUserResizeColumns="True" 
     CanUserSortColumns="False" 
     IsReadOnly="True" 
     CanUserResizeRows="False" 
     AutoGenerateColumns="False" 
     RowHeaderWidth="0" 
     Margin="20,5" 
     HorizontalAlignment="Stretch"> 
     <DataGrid.Columns> 
      <DataGridTextColumn 
       Header="Architecture" 
       Binding="{Binding SoftwareArchitecture.Name, TargetNullValue=Все, FallbackValue=Все}" 
       Width="Auto"/> 
      <DataGridTextColumn 
       Header="Language" 
       Binding="{Binding SysCodepage.Title, TargetNullValue=Все, FallbackValue=Все}" 
       Width="Auto"/> 
      <DataGridHyperlinkColumn 
       Header="Link" 
       Binding="{Binding DownloadLink}" 
       Width="*" 
       CanUserResize="False"/> 
     </DataGrid.Columns> 
    </DataGrid> 
</DataTemplate> 

Questo modello mostra esattamente 3 colonne, se griglia è nidificata in una cella. Ma quando viene utilizzato come RowDetaislTemplate viene visualizzata la 4a colonna vuota. Questo mi fa impazzire.

Qualcuno ha idee perché questo può accadere?

Aggiornamento 1. Come appare:

enter image description here

Update 2.

Finalmente ho trovato l'anima. Appena aggiunto ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Ora è ok:

enter image description here

Ma non riesco a capire questo strano comportamento.

Update 3 (può essere utile a qualcuno)

Recentemente abbiamo trovato un bug che i nostri utenti avevano e gli sviluppatori non hanno fatto. L'errore riguardava ancora la larghezza e l'allineamento di DataGrid. Beh, potrebbe essere che questo non era un bug, ma avevamo un comportamento diverso del controllo.
La ricerca ha rivelato che durante l'installazione del programma di installazione .net framework 4.5 è stato anche aggiornato .net framework 4.0. Questo aggiornamento ha cambiato in qualche modo il comportamento di DataGrid. (al previsto)
Abbiamo chiesto ai nostri utenti di installare il framework 4.5 e il problema scomparso. Anche se la nostra app ha ancora obiettivi .net 4.0

+0

Puoi pubblicare uno screenshot, ho il sospetto che il problema sia la griglia principale che fornisce una colonna * width – Charleh

+0

@Charleh. Hai ragione. La larghezza di una colonna è *. Ma quando questo modello di dati funge da modello per una cella, tutto funziona correttamente. RowDetailsTemplate è un problema. –

+0

@Charleh. Pubblicherò screenshot domani –

risposta

6

Finalmente ho trovato l'anima.

appena aggiunto ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Per chi si rivolge v4.0 Framework
Recentemente abbiamo trovato un bug che i nostri utenti avevano e gli sviluppatori non. L'errore riguardava ancora la larghezza e l'allineamento di DataGrid. Beh, potrebbe essere che questo non fosse un bug ma abbiamo avuto un comportamento diverso del controllo. La ricerca ha rivelato che durante l'installazione del programma di installazione .net framework 4.5 è stato anche aggiornato .net framework 4.0. Questo aggiornamento ha cambiato in qualche modo il comportamento di DataGrid. (al previsto) Abbiamo chiesto ai nostri utenti di installare il framework 4.5 e il problema è scomparso. Sebbene la nostra app sia ancora indirizzata a .net 4.0

Problemi correlati