myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Cross Platform Entwicklung - Mobile und IoT » Wie in einer Xamarin.Shell Anwendung eine neue Seite aufrufen und einen Parameter übergeben?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kriz
myCSharp.de-Mitglied

Dabei seit: 17.01.2017
Beiträge: 72


Kriz ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

C#-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

C#-Code:
    [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!
20.08.2020 19:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 41
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
21.08.2020 08:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.768
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

C#-Code:
BindingContext = new ViewModels.BookDetails_VM(id); // also ohne 'string'

?
21.08.2020 09:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.10.2020 07:54