我開發了很多視圖模型,它們是:什麼樣的編譯器魔術我們需要更多?
1)所有必須實現INotifyPropertyChanged可綁定到UI。
2)屬性設置者必須在更改時提高PropertyChanged。
3)PropertyChanged事件必須提供正確的屬性名稱。
如果你(像我一樣)並列寫像這樣的:
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
然後重構這個方法是這樣,有時忘了更新的屬性名稱直譯:
string _fundName;
public string FundName
{
get
{
return _fundName;
}
set
{
if (_fundName != value)
{
_fundName = value;
RaisePropertyChanged("Name");
}
}
}
,然後花一一天來調試爲什麼你的用戶界面不刷新和數據綁定無法正常工作。
然後,我們需要的是某種魔法。
如果我只需要這樣寫:
[Magic] // implicit transformation
public string FundName { get; set; }
,或者如果我有很多的特性:
[Magic]
public class MyViewModel
{
public string FundName { get; set; }
public string FundType { get; set; }
[NoMagic] // suppress transformation
public int InternalId { get; set; }
}
所以我剛纔已經開發出MSBuild任務生成後,要做到這一點魔術( http://kindofmagic.codeplex.com)。
問題是,你會更喜歡什麼樣的魔法後處理?
自動執行INotifyPropertyChanging是否有意義?
如何爲INotifyPropertyChanging創建相同的事情? – 2010-12-01 17:57:34
@CommanderZ你是否實現並使用INotifyPropertyChanging?如果是這樣的話?也許你想評論http://stackoverflow.com/questions/3835788/other-than-linq-to-sql-does-anything-else-consume-inotifypropertychanging – Simon 2010-12-01 23:02:55