2010-02-09 13 views
20

Tengo, en una ventana, un Grid que contiene un RadioButton, un TextBox y un Button, cada uno en la columna 0, 1, 2, respectivamente. Todos tienen sus alturas configuradas en automático.WPF: Vinculando la altura de un componente a otra

Luego, en otra parte de la ventana, tengo otra Grid con un Label, un TextBox y una Button, en las columnas 0, 1 y 2. Heights también están listos para automóviles.

El problema que tengo es que la altura de la primera grilla es más pequeña que la del segundo. Supongo que es porque Label está obligando al segundo a ser más alto. ¿Cómo puedo hacerlo para que la primera cuadrícula sea tan alta como la segunda? Intenté hacer esto:

Nombre el cuadro de texto en la segunda grilla SomeName.
En el <Grid.ColumnDeclarations> de la primera cuadrícula, cambié la altura de "auto" a "{nombre de elemento vinculante = algún nombre, ruta = altura}".

Pero eso no hizo lo que yo quería. El tamaño era el mismo Creo que el Binding básicamente se está poniendo "auto" y tirándolo allí, que termina siendo lo mismo.

Además, estoy buscando una solución que no implique establecer las alturas a un valor fijo.

Respuesta

9

pusieron las dos rejillas en un shared size scope, y el uso SharedSizeGroup para bloquear las alturas de las filas juntos:

<SomeContainer Grid.IsSharedSizeScope="True"> <!-- Could be the Window or some more nearby Panel --> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition SharedSizeGroup="LabelAndRadioButtonGroup" /> 
    </Grid.RowDefinitions> 
    <Label Grid.Row="0" /> 
    </Grid> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition SharedSizeGroup="LabelAndRadioButtonGroup" /> 
    </Grid.RowDefinitions> 
    <RadioButton Grid.Row="0" /> 
    </Grid> 
</SomeContainer> 

Véase también How to: Share sizing properties between grids en MSDN.

35

se unen al ActualHeight en lugar de la propiedad Height:

<RowDefinition Height="{Binding ActualHeight, ElementName=otherTextBox}" /> 
+0

Eso tampoco funcionó. La única forma de hacerlo funcionar fue agregar una etiqueta y ocultarla. Argh. – zxcvbnm

+0

Curioso. Lo probé antes de publicarlo, aunque con un TextBlock en lugar de un TextBox. Tal vez sea un problema con los márgenes agregados por la grilla (quería unirme a la Altura real del otro RowDefinition para evitar este problema, pero eso no funcionó). – itowlson

+1

Esta es en realidad la respuesta correcta. – Cogent

Cuestiones relacionadas