Hallöchen zusammen,
ich schreibe gerade an meinem ersten WPF-Programm.
Ich komme zwar recht gut klar, jedoch habe ich ein Problem:
Und zwar möchte ich in einem Teil des Programmes eine Liste aus Expandern haben. Wird ein Expander geöffnet oder geschlossen, so werden alle anderen in der Liste weiter nach unten verschoben. Schön und gut, das funktioniert auch soweit (mit einem Grid gelöst).
Nun hätte ich aber gerne, dass diese Expander sich schön flüssig öffnen, und nicht nur so unschön „aufspringen“.
Dafür habe ich folgende Funktion geschrieben:
///
/// Wird aufgerufen, wenn ein Expander eingeklappt werden soll.
/// Sorgt dafür, dass der Vorgang des Zuklappens als eine flüssige Animation angezeigt wird.
///
///
///
private void CollapseExpander(object Sender, RoutedEventArgs e)
{
Expander exp = (Expander)Sender;
Grid grid = (Grid)exp.Content; //ein Grid, das als Tabelle dienen soll
int maxHeight = 25 * grid.RowDefinitions.Count; //gibt die Standarthöhe des Grids an
grid.Height = maxHeight; //damit das Grid nicht sofort zuspringt
double progress = 0; //Fortschritt des Zuklappens
double height = 0; //derzeitige Höhe
//Diese Schleife soll 100 Durchläufe haben, hat aber nur ca. 90
//Muss mir deshalb noch eine geeignetere Funktion zur Berechnung der Höhe ausdenken…
for (int i = 0; progress
Das Problem ist nur:
die Funktion wird ausgeführt, jedoch werden die Änderungen an dem Expander erst übernommen, nachdem die Funktion abgeschlossen ist.
Soll heißen: Nachdem man nun auf den Expander drückt, passiert 1sec lang gar nichts, danach springt er wieder genauso zu, als existiere der Code nicht.
(Ich weiß, die Funktion zur korrekten Berechnung der Höhe stimmt so nicht, die hab ich nur mal schnell so ähnlich hingeschrieben, wie sie aussehen soll)
Gibt es nicht irgendetwas, womit ich das WPF-Programm zwingen kann, das Fenster zu aktualisieren?
Hoffe, ich bin hier nicht im falschen Thread, aber es gibt leider kein WPF-Thread hier…
Ich danke schonmal allen fürs antworten.
Grüße,
Bluesky787