Fragmente
Prin exemple de tot felul
Se poate întâmpla adesea să avem nevoie să afișăm elemente dintr-o colecție eterogenă într-o listă și fiecare articol din listă ar trebui să arate diferit, afișând alte proprietăți indiferent de tipurile specifice. Să vedem acum un exemplu ilustrativ.
Listă
Articolele sunt stocate într-un ListView. Acest lucru nu este neobișnuit pentru aplicațiile cu tehnologie XAML. În primul rând, detaliem un pic din exemplu și „povestea” acestuia.
Clase de modele
Avem un sistem de înregistrare a păsărilor. Următoarele caracteristici ale păsărilor sunt înregistrate uniform:
- Nume,
- kor (vârstă),
- Personalitate,
- Satisfacţie. Ar putea fi un reziduu
- a hrăni (Feed) și
- scare (Scare) Ca rezultat al hrănirii și al speriatului, pasărea noastră variază cumva pe o scară de 1-5 în funcție de specie. Personalitatea este o enumere.
O interfață comună pentru descrierea păsărilor este IBird. Deoarece diferitele rase de păsări răspund diferit la hrănire și speriat, implementarea lor este diferită, acestea sunt plasate în clase separate. Vom avea acum o clasă Owl, Owl și Pigeon, Dove, care va implementa interfața IBird.
Exemple de date
Din motive de simplitate, adăugăm acum eșantionul de date la fișierul codat în spate, nu folosim un model MVVM, scopul nu este să îl descriem. Nu uitați să setați DataContext, să utilizați o ObservabeCollection ca proprietate pentru listă și să o inițializați!
Notă: exemplul actual utilizează tehnologia WPF, pentru tehnologia UWP aceasta se va aplica unui obiect Page, nu unei ferestre. În ceea ce privește prezentarea DataTemplete, acest lucru nu afectează nimic.
ListView
Adăugați o ListView la MainWindow (WPF)/MainPage (UWP) care apare și faceți legarea datelor!
DataTemplate
Pentru a putea modifica afișajul după tip, mai întâi definim șabloanele care vor fi utilizate în codul XAML. Notă: Pentru WPF, pentru UWP
Ce face asta? Vom avea un OwlDataTemplate, un DoveDataTemplate și un DefaultDataTemplate DataTemplate care sunt ușor diferite în stil (de exemplu, culoarea de fundal).
DataTemplateSelector
Programul nu își va da seama automat dacă se folosește OwlDataTemplate pentru tipul Owl. Pentru a face acest lucru, trebuie să ne scriem propriul DataTemplateSelector.
Asigurați-vă că ramura implicită a casei de comutare este, de asemenea, acolo!
… Și conexiunea întregului
Piesele finite sunt „frământate împreună”.
App.xaml
Mai întâi, trebuie să adăugăm DataTemplateSelector ca resursă în App.xaml.
Acest lucru a făcut ca DataTemplateSelector să fie menționat și utilizat în cadrul aplicației.
Modificați ListView
Aveți deja ItemsSource, acum vine ItemTemplateSelector.
Suntem pregătiți pentru asta.
Modificare ulterioară
Dacă doriți să țineți evidența altor tipuri de păsări, acestea vor avea și un aspect implicit, pentru a ilustra acest lucru, adăugați o nouă specie de păsări și adăugați una la lista noastră, apoi priviți rezultatul!
Mai multe informatii
Documentația oficială pentru DataTemplateSelector este aici.
- Caise uscate pentru beneficii și daune pentru pierderea în greutate
- Morcovii au beneficii și daune corpului Cu ceea ce aveți nevoie pentru a mânca morcovi pentru a îmbunătăți vederea
- Cumpărați compararea prețurilor KLARFIT Workspace Go Tablet Treadmill la magazinele WorkspaceGoTablet
- Supă cremă de morcovi 3
- SALATĂ DE CARTOFI VERDE MAIONONĂ CU FIEAT PRĂJIT - 12 ingrediente în 45 de minute; Cinci diete elementare