Tengo un acordeón y la altura de su contenido puede cambiar el tamaño de forma dinámica. Me gustaría ver que Accordion responda dinámicamente a la altura del elemento secundario, pero tengo problemas para hacerlo.dinámicamente cambiar el tamaño de un acordeón abierto
<lt:Accordion Name="MyAccordion"
SelectionMode="ZeroOrOne"
HorizontalAlignment="Stretch">
<lt:AccordionItem Name="MyAccordionItem"
Header="MyAccordion"
IsSelected="True"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch">
<StackPanel>
<Button Content="Grow" Click="Grow"/>
<Button Content="Shrink" Click="Shrink"/>
<TextBox Name="GrowTextBox"
Text="GrowTextBox"
Height="400"
Background="Green"
SizeChanged="GrowTextBox_SizeChanged"/>
</StackPanel>
</lt:AccordionItem>
</lt:Accordion>
private void Grow(object sender, System.Windows.RoutedEventArgs e)
{
GrowTextBox.Height += 100;
}
private void Shrink(object sender, System.Windows.RoutedEventArgs e)
{
GrowTextBox.Height -= 100;
}
private void GrowTextBox_SizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
{
MyAccordion.UpdateLayout();
MyAccordionItem.UpdateLayout();
}
Eso sí, si Me dejo caer y volver a abrir el acordeón, toma la forma de la manera que quiero, pero me gusta este cambio de tamaño que se produzca de inmediato cuando el niño cambia de tamaño.
Intento solucionar esto mediante la adición de un controlador de eventos SizeChanged que llama a UpdateLayout() en Accordion y AccordionItem, pero esto no tiene ningún efecto visual. No puedo entender dónde se produce el cambio de tamaño adecuado dentro del control de acordeón. ¿Alguien tiene alguna idea?
Hmm, esto suena prometedor pero no parece solucionar el problema. ¿Puedo ver cómo luce tu XAML? –
Tengo una cuadrícula de datos dentro de una cuadrícula de datos, y en el tamaño cambiado de la cuadrícula interna, incluí el código detrás como se indica arriba. Déjame probar los botones y responderte. – Joshscorp