C# WPF-el hogyan érdemes egy beléptető rendszert készíteni?
Tehát tegyük fel, hogy van egy adatbázis, hozzá egy API-m, azzal kommunikál. Az alkalmazás indításakor ehhez az autentikációhoz szükséges felületet kell megjeleníteni. A kérdésem az, hogy ez Window, vagy UserControl? Illetve, hogyha UserControl, akkor hogyan oldható meg, hogy a MainWindow elött jelenjen meg és csak a sikeres bejelentkezés után jöjjön létre?
Vagy annak van értelme, hogy maga a MainWindow a login form és utána jelenik meg a többi?





Több mód is van rá.
1) Talán ez a legegyszerűbb. Csinálsz egy saját window-t, amit a program indulásakor (vagy amikor akarod) egy blokkoló dialógusként megjelenítesz. Ha az autentikáció sikerül, akkor továbbengeded.
2) A másik megoldás, amit említettél, a UserControl. A főoldal (vagy ahol meg akarod jeleníteni) ebben az esetben két usercontrolt váltogató oldal. Az egyik a loginfelület, amiről akkor vált át a mainwindow, ha "ellövöd" az eventet, hogy az autentikáció sikeres volt. Ebben az esetben a főoldaladon a bindolt property értékét átállítod, és a usercontrol lecserélődik a valódi tartalomra. Persze ez jóval egyszerűbb, ha nem v-vm mintára építkezel.





Mvvm minta alap egy wpf alkalmazásnál használd.
Készítesz egy MainViewModel osztály, ami a View ViewModelje lesz.
Emelle csinálsz külön egy autentikacioért felelős Service osztályt a ViewModel számára, amit ellenőrzi a adatok helységet (kommunikál az adatbázissal)
A passwordbox textjet nem tudod Bindolni sajna egy propertythez biztonsági okokból. Őszintén finom sincs hogy illik csinálni, de én azt csinálnám hogy belépő gomb command függvény paraméterében atadom a passwordbox vezérlőt. Ezzel a Mvvmet megserted, de nem tudok okosabb megoldást erre.





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!