2010-03-15 10 views
6

Sto utilizzando l'ultimo WPF Toolkit ma sto correndo in un problema di altezza quando ho un grande set di record rilegato in un DataGrid all'interno di un articolo AccordionItem. L'altezza dello Accordion si ridimensiona bene ma lo DataGrid all'interno del controllo fisarmonica non ottiene uno ScrollBar o viene limitato in alcun modo in modo che i record siano nascosti.WPF DataGrid interno Problema di altezza della fisarmonica

so che sto molto probabilmente manca qualcosa di molto semplice (come un vincolante da proprietà height 's il DataGrid alla Fisarmonica ma che sembra disordinato)

qui è una versione ridotta del codice (e sì , questo ha lo stesso problema se si associa in un grande set di record)

<UserControl> 
<layouttoolkit:Accordion x:Name="ReportSelector" HorizontalAlignment="Stretch"> 
    <layouttoolkit:AccordionItem Header="grid 1"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem> 
    <layouttoolkit:AccordionItem Header="grid 2"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem> 
    <layouttoolkit:AccordionItem Header="grid 3"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem>    
</layouttoolkit:Accordion> 
</UserControl> 

risposta

8

Sembra che la mia idea iniziale era di destra - l'unico modo sono stato in grado di risolvere questo è di impegnare la MaxHeight del DataGrid al ActualHeight della Fisarmonica

L'aggiunta dei seguenti proprietà per ogni DataGrid ha fatto il trucco

MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type layouttoolkit:AccordionItem}},Path=ActualHeight}" 
2

Sono così felice mi sono imbattuto su questo! Questo QA deve essere upvoted. Ho avuto un problema simile tranne con le larghezze delle colonne.

My DataGrid aveva Width = "Auto", insieme ad alcune larghezze di colonna * -size. Al di fuori della fisarmonica, il DataGrid ha funzionato bene ma all'interno della fisarmonica, la larghezza di tutte le colonne sarebbe stata ridotta a 10px ciascuna. Non riuscivo a capire perché. Potrebbe essere un bug?

Ho notato che se impostassi una larghezza statica come 400 invece di Auto, le colonne sarebbero state visualizzate correttamente. Poi ho provato a legare DataGrid Width a AccordionItem ActualWidth come hai fatto, e ora funziona perfettamente. Grazie Signore!