2012-08-14 23 views
15

¡Primero! Sé que puede parecer un tipo de dup sin embargo, no lo es.¿Cómo hacer que la última columna de DataGrid ocupe todo el espacio izquierdo?

Tengo una cuadrícula como plantilla de datos para DataGrid.RowDetails. Tiene tres columnas: dos con Width="Auto" y el 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> 

Esta plantilla muestra exactamente 3 columnas, si la rejilla está anidado en una célula. Pero cuando se usa como RowDetaislTemplate aparece la cuarta columna vacía. Esto me vuelve loco.

¿Alguien tiene ideas de por qué esto puede suceder?

Actualización 1. Como se ve:

enter image description here

Actualización 2.

Finalmente encontré la soultion. Acaba de añadir ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Ahora que está bien:

enter image description here

Pero no puedo entender este comportamiento extraño.

Actualización 3 (puede ser útil a alguien)

Recientemente hemos encontrado un bug que tenían nuestros usuarios y los desarrolladores no lo hicieron. El error nuevamente fue sobre el ancho y la alineación de DataGrid. Bueno, puede ser que esto no sea realmente un error, pero tuvimos un comportamiento diferente del control.
La investigación reveló que al instalar .NET Framework 4.5 el instalador también actualizó .NET Framework 4.0. Esta actualización cambió de alguna manera el comportamiento de DataGrid. (al esperado)
Pedimos a nuestros usuarios que instalen Framework 4.5 y el problema desapareció. Aunque nuestra aplicación todavía apunta .net 4.0

+0

Puede publicar una captura de pantalla, sospecho que el problema es la cuadrícula principal dando una * columna de ancho – Charleh

+0

@Charleh. Tienes razón. El ancho de una columna es *. Pero cuando esta plantilla de datos sirve como plantilla para una celda todo funciona bien. RowDetailsTemplate es un problema. –

+0

@Charleh. Voy a publicar la captura de pantalla mañana –

Respuesta

6

Finalmente encontré la soultion.

Recién añadido ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Para los que se dirige v4.0 Marco
Recientemente hemos encontrado un bug que tenían nuestros usuarios y los desarrolladores no lo hicimos. El error nuevamente fue sobre el ancho y la alineación de DataGrid. Bueno, puede ser que esto no sea realmente un error, pero tuvimos un comportamiento diferente del control. La investigación reveló que al instalar .NET Framework 4.5, el instalador también actualizó .NET Framework 4.0. Esta actualización cambió de alguna manera el comportamiento de DataGrid. (al esperado) Les pedimos a nuestros usuarios que instalaran Framework 4.5 y el problema desapareció. Aunque nuestra aplicación todavía se dirige a .net 4.0

Cuestiones relacionadas