Primul Legare de legare Aceste date, este ușor și cred că toată lumea este conștientă, și pentru oricine nu ar fi o revelație. Dar nu toată lumea înțelege că ceea ce se leagă și de ce ar trebui să fie, de asemenea, să încercăm să-l dau seama. În primul rând, utilitatea pe care le obține atunci când se utilizează legătorie „s # este separarea conceptelor de logică și de afișare, care este, aproximativ vorbind, avem un fel de«față», care ne arată utilizatorului, și logica de date din care este ascuns în spatele acestui«bot». Deci, să începem cu un exemplu simplu de modul în care a început totul.
și, astfel, datele de cod ale logicii noastre, adică fișierul SampleBinding.cs:
că noi ar trebui, la începutul programului încărcat în linia helloBox «Faceți clic pe butonul Bună ziua» și de a schimba textul de pe «Buna ziua» prin apăsarea unui buton, totul pare a fi ușor, dar după începerea programului, vom vedea că nimic nu funcționează. De ce spui, pentru că avem un text string = »», care a fost să ne dea un cuier, ci pentru că pur și simplu de completare snap nu înseamnă nimic, pentru că nu specificați o fereastră în cazul în care pentru a obține datele, dar există o legătură cu ceea ce nu se spune. Trebuie să dăm DataContext noastre fereastra la datele pe care le vom lega domeniul nostru formular. DataContext avem, și cu atât mai mult, judecând după fereastra liniei x: Clasa = «WpfBinding.SampleBinding» este deja asociat cu fereastra noastră, dar toate la fel pentru a finaliza legarea modifica ușor codul nostru, după cum urmează.
Luați în considerare ceea ce sa schimbat în fereastra de cod. Și a schimbat faptul că am dat numele clasei sampleWindow fereastra noastră și a spus câmpul text în care este necesar să se ia datele dintr-un element cu numele căii sampleWindow TextData, în esență, să-l cer același DataContext. Dar acest lucru nu este încă suficient pentru ca inițializarea a ferestrei atunci când, după crearea elementelor nu este setat pentru a fi inițializat obligatoriu în TextData și ne agățăm într-un câmp gol. Deci, cum poate fi că, cum să spun fereastra, sau chiar fereastra, iar câmpul text în care datele din logica noastra clasa sa schimbat. Pentru aceasta, avem nevoie de acea interfață magică despre care am amintit adesea ca răspuns la întrebări cu privire la legare în teme de forumul nostru de date și asta pentru că nimeni nu vrea să vadă de aproape, este vorba despre INotifyPropertyChanged din System.ComponentModel. Ceea ce ne dă, și el ne dă singurul eveniment care trimite un PropertyChangedEventArgs fereastră care anunță că a schimbat câmpul pentru a actualiza datele. Și cum va arăta codul SampleBinding.cs după modificare
Considerăm că avem. Ca urmare a punerii în aplicare a INotifyPropertyChanged așa cum am spus înainte de a obține un eveniment public eveniment PropertyChangedEventHandler PropertyChanged casetă de mesaj devoțional cu numele de câmpuri de date de clasă în care au existat modificări ale datelor, astfel încât fereastra poate actualiza afișajul său. Deci, se pare că nu este atât de mult pentru utilizarea cu succes a datelor cu caracter obligatoriu, și anume fereastra cu elementele care știu unde și cum să ia datele și logica care este în măsură să informeze în timp util cu privire la ce date sa schimbat ...