Compiled de legare în Windows 10 aplicații de date


Una dintre inovațiile de Windows UAP este că a devenit posibilă crearea de legături, care urmează să fie compilate. Această inovație îmbunătățește performanța (inclusiv viteză și sarcină) aplicații. Anterior, legări de date se bazează pe reflecție, și, prin urmare, lent. In plus, este mult mai ușor să depana cod legări compilate.

Pentru a crea un Legare care va fi generat atunci când compilați aplicația pe care doriți să utilizați în schimb.
Legare se poate face ca o clasă de cod în urmă, precum și alte elemente ale controlului paginii.
De exemplu:


În cazul în care valoarea specifica o etichetă, legarea va fi un atribut al obiectului Tag paginii.

legăturile sunt compilate puternic tipizat (puteți lega doar la obiecte de un anumit tip) și verificate la momentul compilării, ceea ce înseamnă că, dacă există o eroare este detectată, compilarea va eșua.
În mod similar, WPF legările diverse moduri: OneTime anticipate, oneway și twoWay pe opțiunea. Modul implicit este OneTime.
Comparând performanța de legături compilate și de obicei, puteți vedea în graficul de mai jos:

Pentru a controla modificările fereastra de aplicație cu schimbarea obiectului legat, și interfețele dezvoltator sprijinit au fost mult timp cunoscute: INotifyPropertyChanged, IObservableVector, INotifyCollectionchanged.

Să considerăm un exemplu simplu folosind x: Bind
Să creeze un simplu angajat clasă:


În pagina noastră de clase (mainpage implicit) pentru a adăuga spațiul de nume:


Este necesar să folosim ObservableCollection. Noi aplica ObservableCollection de colectare, deoarece conține implementarea INotifyCollectionChanged, ceea ce înseamnă că de fiecare dată când adăugați sau eliminați elemente din colecția va fi actualizat și controlul este obligat la colectarea datelor.
Declararea colecției:


Adăugați câteva elemente din colecție. Să o facem după inițializarea paginii:


Suntem acum în codul XAML a paginilor noastre utilizează următoarea structură:


Rezultatul:

Compiled de legare în Windows 10 aplicații de date

Valorile pot fi următoarele: Converter, ConverterLanguage, ConverterParameter, FallbackValue, Mod, Cale, TargetNullValue
Spre deosebire sunt utilizate datele de legare folosind nu următoarele valori: Sursa, elementName, RelativeSource, UpdateSourceTrigger
Ei au devenit inutile și sunt înlocuite cu alte funcționale. De exemplu, RelativeSource înlocuit cu numele unui element și atributul său (a se vedea primul exemplu), atunci este pus în aplicare cu ajutorul UpdateSourceTrigger poate fi acum face în PropertyChanged.

O altă caracteristică nouă este un atribut remarcabil x: Faza, care permite descărcarea progresivă a elementelor.
Luați în considerare exemplul nostru:


În acest caz, secvența de alimentare / desen vigoare dată elemente. Prima TextBlock Primul va fi descărcat cu numele, a doua vârsta a treia și ultima va fi încărcat text cu numele organizației. În acest caz, ordinea nu este deosebit de semnificativă, dar uneori, mai ales atunci când datele mass-media, este important. Dacă specificați valoarea lui x :. Faza = «0» aceasta va însemna că importanța acestui element al ordinului de pornire nu este setat.

Pentru a inițializa legăturile de date pot fi utilizate Bindings.Initialize (). dar inițializarea forțată nu este necesară, așa cum se întâmplă atunci când se încarcă pagina.
Puteți apela Bindings.Update () pentru a actualiza datele asincrone. Aceeași metodă poate fi utilizată pentru tipul de legare OneTime, care consumă cele mai puține resurse.
Pentru a oferi „pauză“ de legare și nu pentru a urmări modificările de date pot provoca Bindings.StopTracking (). Și în scopul de a urmări în continuare apeluri de actualizare ().

În plus, este acum posibil să se utilizeze un caracter obligatoriu pentru eveniment. eveniment clic standard este declarată după cum urmează:


Puteți declara un eveniment se află în interiorul unei clase, folosind un astfel de eveniment cu caracter obligatoriu:


Engleză-română dicționar cuvânt ieșiri poke una dintre valorile „înregistrare element de date.“ Deci, se pare, scopul principal al evenimentelor de legare este date de schimbare imperativă.
Modificăm exemplul nostru:


Și în nostru clasa Angajat add:


Dar, ghinion, atunci când depanare este de remarcat faptul că valoarea de vârstă crește, cum era de așteptat, dar interfața nu este actualizat. Acest lucru se datorează faptului că colecția ObservableCollection actualizează obligatoriu numai la adăugarea sau eliminarea elementelor. Pentru a actualiza și a avut loc atunci când datele trebuie să pună în aplicare interfață INotifyPropertyChanged. Acest lucru se face exact în același mod ca și a fost făcut anterior. Spațiu de nume adăugând:


Și punerea în aplicare a evenimentelor de schimbare de proprietate:


Acum puteți apela acest eveniment în setter după setarea Vârstă:


eveniment Tether poate fi cauzată de nici un parametru void Poke ().
și cu parametrii void Poke (expeditor obiect, RoutedEventArgs e)
sau parametrii evenimentelor de tip bază void Poke (expeditor obiect, obiect e)
Supraîncărcarea nu este acceptată.
Inutil să spun, numele metodei nu trebuie să fie o traistă.
Evenimentele pot înlocui evenimente, cum ar fi ICommand MVVM sau EventToCommand, dar o astfel de opțiune ca CanExecute în ele nu este acceptată.

legăturile Compiled sprijini bune convertoare vechi. Adică, puteți crea o clasă care implementează interfața și IValueConverter în ea pentru a face conversia.


În cazul în care cererea noastră are o clasă, putem adăuga la resursele paginii XAML:


Acum putem folosi convertorul atunci când se leagă de date:


Și apoi înregistra textul conținut în numele, maparea este schimbat la convertorul superior (cu majuscule).

legăturile Compiled nu sunt potrivite pentru toate situațiile. Unii mai bine să se utilizeze datele clasice de legare folosind în schimb
Se poate lucra cu JSON sau prin orice alt dicționar obiect netipizat. Ea nu funcționează fără informații despre un anumit tip de date.
Tastarea Duck (dacă ceva merge ca o rață, și șarlatani ca o rață, ea va trata ca o rață) - același nume proprietățile diferitelor obiecte funcționează bine cu, dar nu cu. de exemplu, text = „“ va lucra cu clasa Person și vinul de clasă. Pentru a utiliza x: Legați va trebui să creeze o clasă de bază sau de interfață.
Software-ul este crearea de numai conexiuni posibile cu. Dacă utilizați nu este posibil pentru a adăuga sau elimina anticipate în timpul rulării.
poate nu fi folosit pentru stilul setteri, dar poate fi utilizat în șablonul DataTemplate (așa cum sa discutat mai sus).

Un exemplu poate fi găsit pe GitHub

Compiled de legare în Windows 10 aplicații de date

ancora de expansiune și XAML-marcare pe exemplul localizare
O utilizare cheie de legare (Asocieri) este de a dezvolta aplicatii orientate spre XAML. Legarea - un mediator (mediator), prin care valorile de proprietate sincronizate între obiecte înrudite. Este demn de remarcat nuanță nu este evidentă, dar importantă: deși mod obligatoriu sau altul se referă la obiecte interactive,

Compiled de legare în Windows 10 aplicații de date

Gama funcționalitate în ObservableCollection
Clasa ObservableCollection nu vă permite să adăugați, ștergeți, etc. o colecție de articole. Pentru a adăuga această funcționalitate, puteți crea un descendent al clasei în care să pună în aplicare funcționalitatea necesară.

Compiled de legare în Windows 10 aplicații de date

SQLite este acum pentru aplicații mobile în C # pentru orice platformă
Cel mai recent a lansat o nouă versiune a bibliotecii, care va fi util pentru C # dezvoltatorii care sunt în curs de dezvoltare sau de planificare pentru a dezvolta un cross-platform aplicații mobile. SQLitePCL poate fi utilizat pentru a implementa aplicații de baze de date locale pentru Windows, Windows Store, Windows Phone, Android (Xamarin) și iOS (Xamarin). ea

Compiled de legare în Windows 10 aplicații de date

Cadrul MVVM pentru Windows Phone cu mâinile. partea 1
Cerere platforma de dezvoltare pentru WPF, Silverlight, Magazinul Windows și Windows Phone, aproape întotdeauna implică utilizarea unui model

Compiled de legare în Windows 10 aplicații de date

Windows Phone - DataTemplateSelector
In acest articol voi discuta ce DataTemplateSelector, cum de a crea clase abstracte și DataTemplateSelector personalizate în Windows Phone 8. Ce este DataTemplateSelector? - o clasă, care oferă posibilitatea de a alege un DataTemplate, bazat pe obiectele de date și elementele asociate cu datele (MSDN). Cu alte cuvinte, dacă v-ați lăsa