Laden...

Wie kann ich eine Preseäntation in XAML umsetzen? Grid/ContentControl?

Erstellt von echdeneth vor 3 Jahren Letzter Beitrag vor 3 Jahren 401 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 3 Jahren
Wie kann ich eine Preseäntation in XAML umsetzen? Grid/ContentControl?

Moin, ich tat mich etwas schwer mit der Kurzbeschreibung.

Ich möchte für ein Projekt (über XAML - Grundwissen, Übersicht) in meiner Schule
die Präsentation auch in XAML schreiben.
Mein erster Ansatz ist, mehrere Grids zu schreiben und diese dann wie in PowerPoint durchzuschalten.
über: Visiblity="{Binding Page1}", Visiblity="{Binding Page2}", SwitchCase, usw...
Dies schien mir aber nicht sehr elegant.

Existiert hierfür ein DesignPattern? Ich wüsste nichtmal wie ich dies in Google beschreiben sollte.

Eine Variante mit der eine Grid an eine ObservableCollection gebunden ist, in welcher dann über Klassen die Propertys des Grids und dessen Inhalte und deren Prop. gesetzt werden, wäre Optimal - aber übersteigt momentan (falls möglich) meine Fähigkeiten.

In der Hoffnung mich unmissverständlich Formuliert zu haben...

Danke

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

5.658 Beiträge seit 2006
vor 3 Jahren

Du könntest im ViewModel eine Eigenschaft CurrentPage implementieren, die in der View an ein ContentControl gebunden ist. Dann kannst du dort per DataTemplate die View je nach ausgewählter Seite definieren.

Siehe [Artikel] MVVM und DataBinding, Abschnitt Templates

Weeks of programming can save you hours of planning

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 3 Jahren

Habe eine ObservableCollection mit object als Datentyp.

Die Zuweisung:

            
PageCollection.Add(new Page1());
PageCollection.Add(new Page2());

Einen Zähler als Property, und 2 Methoden (über ICommand Binding)
mit denen der Zähler hoch und runter geht und entsprechend CurrentPage gesetzt wird:

        
private void Vor_OnClick(object obj)
        {
            if (Counter < 11) Counter++;
            else Counter = 10;

            CurrentPage = PageCollection[Counter];
        }

        private void Zur_OnClick(object obj)
        {
            if (Counter != 0) Counter--;
            else Counter = 0;
            CurrentPage = PageCollection[Counter];
        }

Genau was mir vorschwebte. Jezz sach nicht, des is ooch widder Kacke... 8o

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein