2009-05-08 14 views
11

Tengo una cuadrícula con algunas filas. En la fila superior, tengo un ItemsControl que está vinculado dinámicamente a una colección y utiliza un DataTemplateSelector y ItemsPanelTemplate (con un único WrapPanel dispuesto horizontalmente). Aquí hay una versión reducida de lo que tengo hasta ahora:Enlaza la altura de una fila de cuadrícula con su contenido en WPF

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="2" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <GridSplitter Background="#666" Grid.Row="1" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
    <ItemsControl x:Name="items" Background="#DDD" Grid.Row="0" ItemTemplateSelector="{StaticResource itemTemplateSelector}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 
</Grid> 

En lugar de establecer la altura de la primera fila a 40, me gustaría configurarlo dinámicamente en función de la altura mínima que ItemsControl debe ser para encajar todos sus contenidos Como la altura de ItemsControl está limitada por la altura de la fila de cuadrícula, no puedo determinar qué elemento debo vincular y a qué propiedad del elemento debo vincularlo.

Tendría sentido vincular la Altura de la Fila de la Grilla a la "altura deseada" de ItemsControl. Entonces, encontré la propiedad DesiredSize y até la Altura de mi RowDefinition al DesiredSize.Height de ItemsControl. Eso funciona cuando se carga por primera vez, pero no se actualiza a medida que cambio el tamaño del control (recuerde, estoy usando un WrapPanel como ItemsPanelTemplate, así que al redimensionar la ventana, la altura de ItemsControl debería cambiar).

¿Alguien sabe si este tipo de situación incluso es compatible con el marco vinculante, o tendría que agregar el código del controlador de eventos para lograr esto?

Gracias.

Respuesta

30

¿Usted intentó ajustar la altura en Auto para lograr lo que quiere:

<RowDefinition Height="Auto"/> 

(? O estoy pensando demasiado simple aquí ..)

+0

Sí ... a veces la solución simple sólo le escapa . Gracias – Rich

Cuestiones relacionadas