2010-11-15 10 views
7

Tengo una cuadrícula de datos que muestra elementos con dos columnas de datos de fila de texto y un detalle de texto libre más grande que estoy mostrando mediante una plantilla de detalles de fila con solo un borde y un bloque de texto.Método para permitir el desplazamiento del contenido de RowDetail en WPF DataGrid

El problema que tengo es que los detalles del texto a menudo son más grandes que el área permitida para la grilla. El comportamiento de desplazamiento predeterminado de la cuadrícula de datos significa que los usuarios no pueden ver el detalle completo a medida que el desplazamiento avanza al siguiente elemento. Si resuelvo esto mediante el uso

ScrollViewer.CanContentScroll="False" 

entonces la cuadrícula de datos se convierte en unusably lento con un número significativo de filas como la virtualización está apagado.

Pensé que podría evitar esto al envolver el detalle de fila en un visualizador de desplazamiento, pero eso no funciona, ya que el área de detalle no está restringida al área de renderizado.

Entonces, ¿alguien puede ofrecer algunas opciones utilizables? Mi conocimiento de WPF es bastante mínimo, así que me disculpo si hay alguna forma obvia de resolver esto.

Editar: RowDetailsTemplate

<DataGrid.RowDetailsTemplate> 
    <DataTemplate > 
     <Border Background="Gray" 
       Padding="5,5,5,5" CornerRadius="5"> 
      <TextBlock Background="Transparent" 
         Foreground="White" 
         TextWrapping="Wrap" 
         Text="{Binding Text}"/> 
     </Border> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 
+0

Publica un código de ejemplo de su RowDetailsTemplate –

Respuesta

7

Una forma de añadir un ScrollViewer para RowDetails es especificando un MaxHeight para los RowDetails como esto

<DataGrid ...> 
    <DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <Grid MaxHeight="75"> 
       <ScrollViewer> 
        <Border HorizontalAlignment="Stretch" CornerRadius="5" Background="Black" Margin="5" Padding="5"> 
         <TextBlock Text="{Binding RowDetails}" Foreground="#509CD5" FontSize="20" Width="300" TextWrapping="Wrap"/> 
        </Border> 
       </ScrollViewer> 
      </Grid>      
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
    <DataGrid.Columns> 
    <!-- ... --> 
</DataGrid> 
+0

Gracias. No es exactamente lo que quiero, ya que el control con la cuadrícula se puede cambiar de tamaño y el elemento de detalle en sí se moverá, pero me hace pensar si puedo eliminar algo en el código de vista para configurarlo sobre la marcha. – mwtb