Informații generale despre proprietățile de dependență

Windows Presentation Foundation (WPF) oferă un set de servicii care pot fi utilizate pentru a extinde funcționalitatea proprietăților CLR. În mod colectiv, aceste servicii se numesc sistemul proprietății WPF. O proprietate care este susținută de sistemul de proprietăți WPF se numește proprietate de dependență. Această prezentare generală conține o descriere a sistemului proprietății WPF și caracteristicile proprietății dependenței. Descrie modul în care se utilizează proprietățile de dependență existente în marcajul XAML și în cod. Această prezentare generală prezintă, de asemenea, aspecte speciale ale proprietăților de dependență, cum ar fi proprietățile de dependență de metadate și cum puteți crea propria proprietate de dependență într-o clasă personalizată.







Citirea acestei secțiuni înseamnă cunoașterea de bază a mediului CLR și programarea orientată pe obiecte. Pentru a afla exemplele din această secțiune, trebuie să înțelegeți, de asemenea, limbajul de marcare XAML și să știți cum sunt create aplicațiile WPF. Pentru mai multe informații, consultați Walkthrough. Noțiuni de bază cu WPF.

De asemenea, puteți apela direct API-urile sistemului proprietății: metodele GetValue și SetValue. De obicei, acest lucru nu este necesar atunci când se utilizează proprietăți existente ("wrappers" sunt mai convenabile și oferă proprietăți de expunere mai bune pentru instrumentele de dezvoltare), dar pentru anumite cazuri este bine să apelați direct interfețele API.

Pentru proprietățile instalate în marcajul XAML, puteți accesa mai târziu din codul programului (din așa-numitul "cod al părții software"). Pentru mai multe informații, consultați secțiunea Cod a software-ului și XAML în WPF.

Proprietatea de dependență furnizează funcționalitate care extinde funcționalitatea unei proprietăți în comparație cu o proprietate bazată pe un câmp. Adesea, fiecare astfel de set de funcții reprezintă sau susține capacitatea specială a unui set comun de capabilități WPF:

În acest exemplu, resursa este menționată utilizând extensia de marcare DynamicResource (în WPF în marcajul XAML, puteți utiliza fie o referință de resurse statică sau dinamică). Pentru a utiliza o referință de resurse dinamică, trebuie să setați această proprietate la o valoare pentru proprietatea dependenței; aceasta determină specificitatea utilizării referinței dinamice a resurselor, ceea ce este posibil datorită sistemului proprietății WPF. Pentru mai multe informații, consultați Resursele XAML.

O proprietate de dependență poate face referință la o valoare utilizând o legare a datelor. Legarea datelor funcționează prin sintaxa specială a extensiei de marcare în XAML sau obiectul Obligatoriu din codul programului. Cu legarea datelor, definiția valorii finale a proprietății este amânată până la timpul de execuție, iar la execuție valoarea este extrasă din sursa de date.

Următorul exemplu arată modul de setare a proprietății Content a unui buton de control cu ​​o legare declarată în XAML. Legarea folosește contextul de date moștenit și sursa de date XmlDataProvider (nereprezentată). Această legare stabilește proprietatea sursă dorită folosind limba XPath din sursa de date.







Legăturile sunt tratate ca o valoare locală. Aceasta înseamnă că, dacă specificați o valoare locală diferită, legarea va fi ștearsă. Pentru mai multe informații, consultați Prioritatea valorii proprietăților de dependență.

Nici proprietățile de dependență și nici clasa DependencyObject nu au construit suport pentru interfața INotifyPropertyChanged pentru a genera notificări despre modificările valorii proprietății sursă a DependencyObject pentru operațiile de legare a datelor. Pentru mai multe informații despre crearea proprietăților pentru utilizarea în legarea datelor care ar putea raporta modificări la punctul final de legare a datelor, consultați Înțelegerea legării datelor.

Stilurile și șabloanele sunt doi dintre senarienii principali motivați care folosesc proprietățile de dependență. Stilurile sunt utile în special pentru setarea proprietăților care definesc interfața utilizator a aplicației. De obicei, stilurile sunt definite ca resurse în XAML. Stilurile interacționează cu un sistem proprietate, deoarece de obicei conțin "instalatori" pentru proprietăți specifice, precum și "declanșatoare" care modifică valoarea proprietății pe baza valorii actuale actuale a altei proprietăți.

Următorul exemplu creează un stil foarte simplu (care ar trebui să fie definit în dicționarul Resurse, care nu este afișat), iar acest stil este aplicat direct pe proprietatea Style a butonului Buton. Instalatorul de stil stabilește ca proprietatea de fundal a butonului "Buton" să fie "verde".

Comportamentul valoarea proprietății moștenire nu este disponibil la nivel global pentru toate proprietățile de dependență, deoarece timpul de calcul de moștenire influențează performanța sistemului. Moștenirea valorilor de proprietate sunt de obicei disponibile numai pentru proprietățile pentru care există un anumit scenariu de utilizare, ceea ce implică justificarea valorii proprietății moștenirii. Se determină dacă o moștenire proprietate de dependență este acceptat, puteți utiliza secțiunea Informații a unei proprietăți de dependență pentru această dependență director proprietate SDK.

Următorul exemplu arată legarea și asignarea unei valori la proprietatea DataContext. (care nu a fost prezentat într-unul din exemplele de legare anterioare). Nicio legare ulterioară în obiectele copil nu necesită o definiție a sursei: ele pot folosi valoarea mostenită din obiectul DataContext al obiectului parental StackPanel. (Puteți, de asemenea, să setați direct proprietatea DataContext sau valoarea sursă a obiectului copilului în obiectul Obligație și să nu utilizați în mod deliberat valoarea legată de contextul de date pentru legări.)

Un control personalizat cu proprietăți implementate ca proprietăți de dependență primește suportul corespunzător pentru Designerul WPF din Visual Studio. Un exemplu este capacitatea de a edita proprietăți dependente directe și atașate utilizând fereastra Proprietăți. Pentru mai multe informații, consultați Înțelegerea dezvoltării managementului.

Obținerea valorii proprietății dependenței înseamnă că valoarea care a fost stabilită pentru această proprietate de către oricare din celelalte surse de date de intrare care ar putea fi bazată pe proprietățile participante la sistemul de proprietăți WPF poate fi obținută. Determinarea priorității la stabilirea valorii proprietății dependenței este aranjată astfel încât să poată fi prevăzută interacțiunea diferitelor scenarii de obținere a proprietăților valorilor lor.

Luați în considerare următorul exemplu. În acest exemplu, este prezentat un stil care se aplică tuturor butoanelor și proprietăților lor de fundal. precum și un buton cu o valoare setată la nivel local de fundal.

Uneori, atunci când descriu proprietățile de dependență în documentația SDK utilizează termenul „valoare locală“ sau „valoare stabilită la nivel local“. Valoarea setată la nivel local este o valoare de proprietate, care este montat direct instanței obiect din codul programului, sau ca un atribut element din XAML.

De fapt, pentru primul buton proprietatea este setată de două ori, dar se aplică numai o singură valoare: una a cărei prioritate este mai mare. O valoare setată la nivel local are cea mai mare prioritate (cu excepția animației care se execută, dar animația nu se aplică în acest exemplu) și astfel culoarea de fundal a primului buton utilizează o valoare specificată local în loc de valoarea stabilită de stil. Al doilea buton nu are o valoare locală (și nici alte valori cu o prioritate mai mare decât stilul alocat) și astfel culoarea de fundal pentru acest buton vine de la stil.







Articole similare

Trimiteți-le prietenilor: