Ich habe ein Akkordeon und die Höhe des Inhalts kann dynamisch angepasst werden. Ich würde gerne sehen, dass das Akkordeon dynamisch auf die Höhe des untergeordneten Elements reagiert, aber ich habe Probleme damit.Dynamisches Ändern der Größe eines geöffneten Akkordeons
<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();
}
Wohlgemerkt, wenn ich das Akkordeon wieder öffnen kollabieren und dann, es Form nur die Art und Weise nimmt ich will, aber ich würde das Ändern der Größe sofort auftreten mögen, wenn das Kind die Größe.
Ich habe nur schwach versucht, dies zu beheben, indem ich einen SizeChanged Event-Handler hinzufüge, der UpdateLayout() für Accordion und AccordionItem aufruft, aber das hat keine visuellen Effekte. Ich kann nicht herausfinden, wo in der Accordion-Steuerung die richtige Größenanpassung stattfindet. Hat jemand eine Idee?
Hmm, das klingt vielversprechend, aber es scheint das Problem nicht zu beheben. Kann ich sehen, wie Ihr XAML aussieht? –
Ich habe ein Datagrid innerhalb eines Datagrids, und bei einer Größenänderung des inneren Gitters habe ich den Code wie oben beschrieben eingefügt. Lass mich die Knöpfe anprobieren und zu dir zurückkommen. – Joshscorp