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 :)