rowdefinitions example wpf xaml layout wpf-controls grid

rowdefinitions - wpf grid example xaml



Grid''s SharedSizeGroup y*sizing (1)

MSDN :

Las columnas y filas que participan en el intercambio de tamaño no respetan el tamaño Star. En el escenario de tamaño compartido, el tamaño Star se trata como Auto

Si usa la estrella, todas las columnas tendrían el mismo ancho, por lo que debe asignar el mismo SharedSizeGroup a todas si no le importa el aspecto del tamaño automático:

<Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="A"/> <ColumnDefinition Width="Auto" SharedSizeGroup="B"/> <ColumnDefinition Width="*" SharedSizeGroup="StarDontWork"/> <ColumnDefinition Width="Auto" SharedSizeGroup="D"/> <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/> <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/> <ColumnDefinition Width="110" SharedSizeGroup="G"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/> </Grid.ColumnDefinitions>

(De este comportamiento también se deduce que puede soltar la propiedad Width cuando se establece SharedSizeGroup )

Puede deducir que si todas las columnas de tamaño automático están en grupos de tamaño compartido, todas las columnas de tamaño de estrella tendrán los mismos tamaños que todas las cuadrículas en el alcance tendrán la misma cantidad de espacio no utilizado que se distribuirá a las columnas de tamaño de estrella .

Un simple ejemplo:

<Grid.ColumnDefinitions> <ColumnDefinition SharedSizeGroup="A"/> <ColumnDefinition SharedSizeGroup="B" Width="*"/> <ColumnDefinition SharedSizeGroup="C"/> </Grid.ColumnDefinitions>

Como se explicó, el Width="*" no hará nada, pero como las columnas 0 y 2 están sincronizadas, la columna 1 debe estar sincronizada, por lo que puede soltar el SharedSizeGroup :

<Grid.ColumnDefinitions> <ColumnDefinition SharedSizeGroup="A"/> <ColumnDefinition Width="*"/> <ColumnDefinition SharedSizeGroup="C"/> </Grid.ColumnDefinitions>

Tengo un control de usuario, llámalo UserControl, que tiene una grilla con las siguientes definiciones de columna:

<Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="A"/> <ColumnDefinition Width="Auto" SharedSizeGroup="B"/> <ColumnDefinition Width="*" SharedSizeGroup="C"/> <ColumnDefinition Width="Auto" SharedSizeGroup="D"/> <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="E"/> <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="F"/> <ColumnDefinition Width="110" SharedSizeGroup="G"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/> <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/> </Grid.ColumnDefinitions>

También tengo MainWindow, que contiene una cuadrícula en sí, con la siguiente propiedad definida en la grilla:

Grid.IsSharedSizeScope="True"

Ahora, agregué un par de UserControls a la grilla en MainWindow (cada uno en una fila separada). Mi objetivo es que cada ancho de columna de los diferentes UserControls permanezca sincronizado. Todo funciona bien cuando se usa SharedSizeGroup excepto por una cosa. Parece que cualquier columna con un Ancho de * no se comporta como debería. Parece que los anchos de columna * se establecen como si fueran automáticos.

¿Existen limitaciones / problemas con SharedSizeGroup y * sizing? Esta parece ser la mejor manera de mantener el ancho de las columnas sincronizado, pero parece que no puedo solucionarlo.

Gracias.