2011-02-24 17 views
10

Tengo una cuadrícula cuyas filas deben redimensionarse dinámicamente en función del modelo de vista. Me gustaría hacer algo como lo siguiente:¿Es posible utilizar desencadenantes en Grid RowDefinitions?

<RowDefinition Height="2*"> 
    <RowDefinition.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="RowDefinition.Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="RowDefinition.Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 

Esto compila, tiros sin errores, pero no parece tener ningún efecto. ¿Hay algo que me falta, o la Cuadrícula no permite que sus filas cambien de tamaño después de que se dibuja la forma o algo por el estilo?

Respuesta

15

Creo que el único problema con su código Xaml es que está sobrescribiendo el DataTrigger configurando Height explictly en el RowDefinition. Trate de usar un Setter lugar

<RowDefinition> 
    <RowDefinition.Style> 
     <Style> 
      <Setter Property="RowDefinition.Height" Value="2*"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="RowDefinition.Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="RowDefinition.Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 
+0

Sí. Tan pronto como eliminé la configuración explícita de Altura, el problema desapareció. ¡Buena atrapada! – GWLlosa

+0

¿Por qué debería indicar RowDefinition.Height y por qué no funciona solo con Height as Property? No lo entiendo – MrScf

4

Sé que este post es de 3 años de edad, pero todavía podría ayudar a alguien.

<RowDefinition> 
    <RowDefinition.Style> 
     <Style TargetType="RowDefinition"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 

Estaba en la misma situación, logré que funcionase estableciendo TargetType en RowDefinition.

+0

RowDefinition.Height se puede reducir a Height – Dummy

+1

@Dummy - Gracias por la corrección, consulte XAML actualizado :) –

Cuestiones relacionadas