2010-03-15 7 views
6

estoy usando la última WPF Toolkit pero estoy corriendo en un problema de altura cuando tengo un gran conjunto de registros con destino en un DataGrid dentro de un elemento AccordionItem. La altura del Accordion en sí misma se adapta muy bien, pero el DataGrid dentro del control del acordeón no obtiene un ScrollBar ni se restringe de ninguna manera por lo que los registros están ocultos.WPF DataGrid dentro edición altura acordeón

Sé que estoy muy probablemente perdiendo algo muy simple (como un enlace entre la propiedad altura del DataGrid 's para el acordeón pero que parece desordenado)

aquí es una versión reducida del código (y sí , esto tiene el mismo problema si enlaza en un gran conjunto de registros)

<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> 

Respuesta

8

Parece que mi idea inicial era correcta - la única forma en que he sido capaz de resolver éste es obligar a la MaxHeight del DataGrid a la ActualHeight del AccordionItem

Adición de la siguiente propiedad a cada DataGrid hizo el truco

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

Estoy muy contento de haber tropezado con esto! Esta garantía de calidad debe ser actualizada. Tuve un problema similar, excepto con el ancho de las columnas.

My DataGrid tenía Width = "Auto", junto con algunos * anchos de columna de tamaño grande. Fuera del Acordeón, el DataGrid se procesó bien, pero dentro del Acordeón, el ancho de todas las columnas se aplastaría a 10px cada una. No pude entender por qué. Podría ser un error?

Me di cuenta de que si establecía un ancho estático como 400 en lugar de Auto, las columnas se procesarían correctamente. Luego intenté vincular el ancho de DataGrid al AccordionItem ActualWidth como lo hizo, y funciona perfectamente ahora. ¡Gracias Señor!