Fork me on GitHub

Mały blog DIY

Potyczki małe i duże z elektroniką i programowaniem

Code Snippet Dla PropertyChanged (MVVM)

| Comments

Zajmuję się ostatnio poznawaniem programowania dla Windows Phone 7.5. Dość poważnym problemem było dla mnie zrozumienie jak działa bindowanie (bardzo prosta rzecz we Flexie) i jak włączyć aktualizację danych z modelu w widoku.
Po chwili googlania znalazłem bardzo dobry tutorial na stronach bazy wiedzy Codeguru.
Można się z niego dowiedzieć, że rozwiązaniem tego problemu jest implementacja interfejsu INotifyPropertyChanged dla każdego modelu (lub ViewModelu - ale to kwestia na osobny post).
Wspomniana implementacja wygląda mniej więcej tak:

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this,
            new PropertyChangedEventArgs(propertyName));
    }
}

W efekcie czego wystarczy dla każdej zmiennej w obiekcie dać takie gettery i settery:

private int myField;

public int MyProperty
{
    get
    {
        return this.myField;
    }

    set
    {
        if (this.myField != value)
        {
            this.myField = value;
            this.OnPropertyChanged("MyProperty");
        }
    }
}

Problem pojawia się w momencie gdy trzeba stworzyć dużo zmiennych do modelu, albo skonwertować obiekt z AS3 (tak jak w moim przypadku). Wtedy z pomocą przychodzą snippety stworzone przez Mariano Omar Rodriguez. Tworzą one kod identyczny z tym podanym wcześniej.
Na wszelki wypadek lokalna kopia do ściągnięcia tutaj.

W Visual Studio 2010 snippety dostępne są pod skrótami: propnpc oraz onpc. (czyli wpisujemy propnpc, naciskamy Tab dwa razy i wpisujemy nazwę zmiennej :)

Komentarze