Ich entwickle viele Ansicht Modelle, die sind:Welche Art von Compiler Magie brauchen wir mehr?
1) Alle müssen implementieren INotifyPropertyChanged, um bindbar zu UI.
2) Property Setter müssen PropertyChanged bei Änderung erhöhen.
3) Das PropertyChanged-Ereignis muss den richtigen Eigenschaftsnamen angeben.
Wenn Sie (wie ich) gebunden so etwas wie dieses zu schreiben:
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
dann wie folgt diese Methode Refactoring und manchmal vergessen, Eigenschaftsnamen zu aktualisieren wörtliche:
string _fundName;
public string FundName
{
get
{
return _fundName;
}
set
{
if (_fundName != value)
{
_fundName = value;
RaisePropertyChanged("Name");
}
}
}
Und dann ein verbringen Tag zu debuggen, warum Ihre Benutzeroberfläche nicht aktualisiert und Datenbindung funktioniert nicht ordnungsgemäß.
Dann brauchen wir nur eine Art Magie.
Was passiert, wenn ich brauche nur zu schreiben:
[Magic] // implicit transformation
public string FundName { get; set; }
oder wenn ich viele Eigenschaften haben:
[Magic]
public class MyViewModel
{
public string FundName { get; set; }
public string FundType { get; set; }
[NoMagic] // suppress transformation
public int InternalId { get; set; }
}
So habe ich entwickelt gerade eine MSBuild Aufgabe, diese Magie nach dem Build zu tun (http://kindofmagic.codeplex.com).
Die Frage ist, welche Art von magischer Nachbearbeitung möchten Sie mehr?
Ist die automatische Implementierung von INotifyPropertyChanging sinnvoll?
Was ist mit dem Erstellen der gleichen Sache für INotifyPropertyChanging? –
@CommanderZ Implementieren und verwenden Sie INotifyPropertyChanging? Wenn ja wofür? vielleicht möchten Sie http://stackoverflow.com/questions/3835788/other-than-linq-to-sql-does-anything-else-consume-inotifypropertyychanging kommentieren – Simon