Aplicație Win 8 în 10 zile – #1 – navigare și design
A venit prima zi în care vom discuta puțin despre proiect. În Visual Studio 2013 deschidem un proiect Windows Store folosind template-ul SplitApp. Motivul alegerii template-ului este simplu: mai puțin cod, același rezultat (așezare drăguță în pagină, răspunde la portrait și landscape by default precum și la snapped mode)
Am decis să șterg din proiect partea care nu ne interesa (SplitApp.xaml) și să las doar ItemsPage.xaml
Acum o să adăugăm o nouă pagină aplicației noastre unde vom afișa întrebările și cele patru variante de răspuns.
- Click dreapta pe numele proiectului
- Add new item
- BlankPage.Xaml pe care o vom redenumi în NewGame.xaml
Vom intra în ItemsPage.xaml.cs și o să ne uităm la metoda care răspunde la eventul de click din grid. Creăm o variabilă groupId care o să ia valoare proprietății UniqueId pe care o are fiecare item din grid-ul meu. Grid-ul meu este populat la rândul lui din SampleDataSource.cs care citește informații din SampleData.json. V-am încurcat nițel?
Cum funcționează template-ul
Am GridView-ul meu în ItemsPage.xaml, proprietățile care mă interesează pe mine sunt: ItemsSource care ne spune că ia iteme din itemsViewSource, ItemClick care este event-ul care o să răspundă la click-ul meu și ItemTemplate care spune practic cum o să arate fiecare item din GridView-ul meu. Observăm că are Binding pentru ImagePath, Title și Subtitle.
Aceste informații le ia din SampleData.json pe care l-am modificat eu astfel încât în loc de unique id să am categoriile care mă interesează( istorie, geografie etc) și în loc de Title să am titlul categoriei mele: Istorie, Geografie etc. Restul proprietăților nu mă interesează deosebit de mult așa că le putem fie lăsa cum sunt fie le putem goli.
Este important să ținem minte UniqueId pentru că pe acesta îl vom folosi ca parametru trimis în NewGame.xaml
Mergem la metoda ItemView_ItemClick (cea care răspunde la eventul de click din grid) și o modificăm astfel:
În variabila groupId vreau să stochez UniqueId-ul luat din json pe care-l primesc atunci când utilizatorul a dat click pe unul dintre itemele din gridul meu. A doua linie de cod din interiorul metodei este cea care face navigarea la o altă pagină din interiorul soluției mele trimițând în același timp și parametrul groupId. Tot ce mai urmează acum să facem este să mergem în NewGame.xaml.cs, să prindem parametrul trimis și să încărcăm pagina corespunzătoare. Facem asta modificând metoda OnNavigatedTo
Practic am prins parametrul e și l-am atribuit stringului categorie. Verificăm dacă printr-o eroare parametrul este gol, dacă nu este trecem cu el printr-un switch ca să vedem ce puzzle ar trebui să generăm. Cele 6 metode nu le-am generat încă, fie ignorăm eroarea pentru moment fie dăm click dreapta pe eroare –> Generate–> Method stub
Mâine
Pentru moment aceasta este forma aplicației noastre. De metodele pe care le-am generat, dar nu le-am populat ne vom ocupa mâine. Tot mâine o să facem design-ul paginii NewGame și algoritmul de randomizare a întrebărilor/răspunsurilor.
Have a nice day.
By: Adrian Coman