Már meglévő User osztály használata

Címkék
Már meglévő User osztály használata
2022-10-28T08:27:17+02:00
2022-10-28T18:59:43+02:00
2022-10-30T15:30:42+01:00
kokohun
Sziasztok!

Xamarin segítségével fejlesztek C#-ban egy Leltár applikációt MVVM-et használva. Olyan gondom lenne, hogy van nekem egy User.cs osztályom, olyan property-kel mint pl. a UserName. Na már most, készítettem egy bejelentkező felületet, ott szépen létre van hozva egy User osztály,
User User = new User();
módon. Az inputokból fel is töltődnek a User propertyk olyanokkal mint Felhasználónév-Jelszó. A kérdés hogy új ViewModel Page-en hogy tudnám a már korábbi Page-en feltöltött User adatokat használni?

Szóval hogy érthetőbb legyen, bejelentkezek pl. "teszt" néven, ez az ott létrehozott User osztály UserName property-jébe mentésre kerül, és a következő ViewPage-en hogy tudnám az előző ViewPage-emen használt UserName property-met használni? A lényeg az lenne, hogy amivel bejelentkezek UserName, az a többi oldalon is egy Label-en meglenne jelenítve hogy pl. "Bejelentkezve, mint teszt".

Próbálkoztam már sok mindennel, öröklődéssel stb. de nem akar működni sajnos. Pl. az új ViewPage-en hiába hozok létre
User User = new User();
módon User-t, az már nyilván egy teljesen új User lesz, nekem pedig a már meglévőt egy másik fájlból kellene használni. Valahogy az Új ViewPage-en létrehozott User User-t kellene egyenlővé tenni a másik fájlban létrehozott, adatokkal feltöltött User-el, de nem tudom hogyan.

Válaszokat előre is köszönöm!
Mutasd a teljes hozzászólást!
Nem túl elegáns, de működik. Józan paraszti ésszel sikerült megoldani. Leírom, hátha másnak is segítek vele. 

Szóval nekem az első Page-em a MainPageViewModel, ezen keresztül zajlik egy LoginCmd command-al a bejelentkezés. A második Page-em ahová bejelentkezés után jutunk a HomePage. Tehát a HomePage-en szeretném kiíratni Label-re a bejelentkezett felhasználó adatait. A HomePage class-nak a konstruktorába csináltam egy string FirstName változót (Én jelen esetben a keresztnevet szeretném kiíratni):

public HomePage(string FirstName) { InitializeComponent(); }
Ezután a HomePage XAML-ben létrehoztam egy ilyen Labelt, aminek nevet is adtam textWelcome néven:

<Label x:Name="textWelcome" Text="{Binding StringFormat='Bejelentkezve, mint {0}'}"></Label>
A MainPageViewModel-be a bejelentkezés validációhoz amikor az új oldalra irányítás történik, a HomePage konstruktorral tovább küldöm a User.FirstName-et:

Application.Current.MainPage = new NavigationPage(new HomePage(User.FirstName));
Ezután pedig a HomePage konstruktorában a textWelcome text-nek BindingContext-el megadom a konstruktor tulajdonságaként tovább "küldött" FirstName-et:

public HomePage(string FirstName) { InitializeComponent(); textWelcome.BindingContext = FirstName; }
Azt természetesen nem írtam le, de a MainPage-en nem árt ha a FirstName kap valami értéket mielőtt továbbküldésre kerül.
Mutasd a teljes hozzászólást!

  • Na módosítom az előző válaszom, szóval át lehet passzolni xamarinnál command-ban a viewmodelek között az adatokat.

    Frissítsd a böngésződet
    4:18-tól
    Mutasd a teljes hozzászólást!
  • Én az alap MVVM struktúrát használom, nem pedig ezt a FreshMVVM-wt, így nekem pl. nincs
    CoreMethods.PushPageModel<>()
    metódusom amivel áttudnám dobni egyik View property-jét a másikba. Valami másik megoldás esetleg?
    Mutasd a teljes hozzászólást!
  • [Lesson 2] Xamarin MVVM: How to pass a parameter from one view model to another

    Nem xamarinozok, de keresgélj.
    3:30-nál mutatja, hogy passzolja át a paramétert az egyik viewmodelből, navigation.pushasync-el.
    Utána meg, hogy olvassa ki...
    Mutasd a teljes hozzászólást!
  • Nem túl elegáns, de működik. Józan paraszti ésszel sikerült megoldani. Leírom, hátha másnak is segítek vele. 

    Szóval nekem az első Page-em a MainPageViewModel, ezen keresztül zajlik egy LoginCmd command-al a bejelentkezés. A második Page-em ahová bejelentkezés után jutunk a HomePage. Tehát a HomePage-en szeretném kiíratni Label-re a bejelentkezett felhasználó adatait. A HomePage class-nak a konstruktorába csináltam egy string FirstName változót (Én jelen esetben a keresztnevet szeretném kiíratni):

    public HomePage(string FirstName) { InitializeComponent(); }
    Ezután a HomePage XAML-ben létrehoztam egy ilyen Labelt, aminek nevet is adtam textWelcome néven:

    <Label x:Name="textWelcome" Text="{Binding StringFormat='Bejelentkezve, mint {0}'}"></Label>
    A MainPageViewModel-be a bejelentkezés validációhoz amikor az új oldalra irányítás történik, a HomePage konstruktorral tovább küldöm a User.FirstName-et:

    Application.Current.MainPage = new NavigationPage(new HomePage(User.FirstName));
    Ezután pedig a HomePage konstruktorában a textWelcome text-nek BindingContext-el megadom a konstruktor tulajdonságaként tovább "küldött" FirstName-et:

    public HomePage(string FirstName) { InitializeComponent(); textWelcome.BindingContext = FirstName; }
    Azt természetesen nem írtam le, de a MainPage-en nem árt ha a FirstName kap valami értéket mielőtt továbbküldésre kerül.
    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd