Introducere în legarea datelor wpf, tutorial, code q - rusă (ru)

Convertirea unei valori booleene la o valoare de vizibilitate

În acest exemplu, granița roșie (frontieră) este ascunsă dacă caseta de selectare nu este bifată utilizând IValueConverter.







Notă. BooleanToVisibilityConverter folosit în exemplul de mai jos este un convertor de valori inline situat în spațiul de nume System.Windows.Controls.

Implementarea programului INotifyPropertyChanged

INotifyPropertyChanged - este o interfață folosită pentru a lega o sursă (adică, DataContext), la o interfață de utilizator sau de alte componente știa că proprietatea sa schimbat. WPF actualizează automat interfața de utilizator pentru dvs. când vede evenimentul PropertyChanged. Este de dorit ca această interfață să fie implementată într-o clasă de bază pe care toate modelele de vizualizare le pot moșteni.

În C # 6, tot ce aveți nevoie:

Acest lucru vă permite să apelați NotifyPropertyChanged în două moduri diferite:

  1. NotifyPropertyChanged (). care va ridica evenimentul pentru dispozitivul care îl sună, datorită atributului CallerMemberName.
  2. NotifyPropertyChanged (nameof (SomeOtherProperty)). care va ridica evenimentul pentru SomeOtherProperty.

Pentru .NET 4.5 și mai mult, folosind C # 5.0, acesta poate fi folosit în schimb:

În versiunile .NET la 4.5, trebuie să definiți numele proprietăților ca constante șir sau o soluție folosind expresii.

Notă. Puteți lega proprietatea „plain vechi C # obiect» (POCO), care nu pune în aplicare INotifyPropertyChanged și urmăriți piciorușul de performanțe mai bune decât se aștepta. Aceasta este o funcție ascunsă în .NET și ar trebui probabil evitată. Mai mult, acest lucru va duce la scurgeri de memorie dacă modul de legare nu este Onetime (vezi aici).







Ajungeți la proprietatea strămoșului

Puteți lega proprietatea strămoșilor în arborele vizual folosind legarea relativă a resurselor. Cel mai apropiat control este mai mare în arborele vizual, care este de același tip sau derivă de la tipul pe care îl specificați, va fi folosit ca sursă de legare:

În acest exemplu, butonul1 are un fundal gri, deoarece cel mai apropiat strămoș al grila are un fundal gri. Button2 are un fundal alb, deoarece cel mai apropiat strămoș derivat din FrameworkElement este StackPanel alb.

Legați de proprietatea unui alt element numit

Puteți lega o proprietate unui element denumit, dar elementul numit trebuie să fie în domeniul de aplicare.

Definirea contextului de date

Pentru a lucra cu relațiile în WPF, trebuie să definiți un DataContext. DataContext raportează legăturile, unde primesc datele lor în mod implicit.

Puteți seta, de asemenea, DataContext folosind codul, dar este de remarcat faptul că XAML IntelliSense oarecum pretentios: în XAML IntelliSense trebuie să fie instalat puternic tipizat DataContext, oferind proprietăți care sunt disponibile pentru legarea.

Deși există un cadru care va ajuta sa va definiti mai bine DataContext dvs. (de exemplu, MVVM Light are Locator viewmodel, care folosește Inversarea Control), vom folosi o metodă rapidă și murdară în sensul prezentului ghid.

Puteți defini un DataContext pentru aproape orice element vizual în WPF. DataContext este de obicei moștenit de la strămoșii din arborele vizual, cu excepția cazului în care este redefinit în mod explicit, de exemplu, în interiorul ContentPresenter.

Legarea valorilor multiple folosind multiplicarea

MultiBinding vă permite să legați mai multe valori la aceeași proprietate. În următorul exemplu, mai multe valori sunt legate la proprietatea Text a câmpului de text și sunt formatate utilizând proprietatea StringFormat.

În plus față de StringFormat. IMultiValueConverter poate fi, de asemenea, utilizat pentru a converti valori de la legături la o singură valoare pentru ținta MultiBinding.

Cu toate acestea, MultiBindings nu pot fi imbricate.







Articole similare

Trimiteți-le prietenilor: