Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Wie in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben?
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 78

Themenstarter:

Wie in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben?

beantworten | zitieren | melden

Hallo zusammen,
ich möchte in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben. Leider kommt der Parameter nicht an. hier mein Code:

private async void GetInformation(string ID)
        {
            Routing.RegisterRoute(nameof(Views.BookDetails), typeof(Views.BookDetails));
            await Shell.Current.GoToAsync($"{nameof(Views.BookDetails)}?BookID={ID}");
        }

Hier hat die ID noch einen Wert

    [QueryProperty(nameof(BookID), nameof(BookID))]
    public partial class BookDetails : ContentPage
    {
        public string BookID 
        { 
            get => id; 
            set 
            { 
                id = Uri.UnescapeDataString(value); 
                OnPropertyChanged(); 
            } 
        }
        public string id;
        public BookDetails()
        {
            InitializeComponent();
            BindingContext = new ViewModels.BookDetails_VM(string id);
        }

Hier sollte die ID eigentlintlich ankommen, aber die Werte sind immer null.
Was übersehe ich? Ich hab zig Dokumentationen gelesen, aber irgendwo stimmt was nicht...

Schonmal vielen Dank!
private Nachricht | Beiträge des Benutzers
Urza
myCSharp.de - Member



Dabei seit:
Beiträge: 42

beantworten | zitieren | melden

Hallo Kriz,

ich würde mal vermuten, dass zuerst der Konstruktor aufgerufen wird und anschließend die Property mit dem "Query-Parameter" gefüllt wird.
Daher ist im Konstruktor die id noch nicht vorhanden => Du musst das ViewModel im BookID-setter erstellen. So wird es auch hier gemacht: Pass Data

Viele Grüße
“Knowledge cannot replace friendship. I'd rather be an idiot than lose you.”

- Patrick to Spongebob
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3955

beantworten | zitieren | melden

Das sind aber Grundlagen der OOP, also bei jeder Objekterzeugung stehen im Konstruktor nur die übergebenen Parameter (falls angegeben) zur Verfügung und alle Member sind mit Default-Werten initialisiert.

Und du meintest wohl


BindingContext = new ViewModels.BookDetails_VM(id); // also ohne 'string'
?
private Nachricht | Beiträge des Benutzers