是
您需要實現INotifyPropertyChanged在您的包裝,並呼籲PropertyChanged("DBName")
每次DBName
改變。
更新
我認爲這個問題可以通過強制執行一個簡單的規則來解決:總是通過屬性設置。如果你強制執行該操作,那麼其他程序員不會忘記致電PropertyChanged("DBName")
。
public class DBWrapper : INotifyPropertyChanged
{
public event PropertyChangedEventHandler Propertychanged;
private string dbName;
public string DBName
{
get { return dbName; }
private set
{
dbName = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("DBName"));
}
}
}
public void SomeMethodThatChangesDBName()
{
DBName = "SomethingNew";
}
}
使用這種方法意味着事件被稱爲每次數據庫名更新時的代碼。
有沒有其他的解決方法。通常我在我的WPF應用程序中調用Connect(string dbname)方法,該方法調用.NET託管包裝的連接方法。我可以在這個方法中完成我的要求,但假設有任何新方法出現,我必須確保程序員調用了屬性changed(「DBName」),否則代碼可能會中斷。 – 2010-10-19 12:26:14
那麼,確保這個屬性的設置器(可以是私有的)始終引發PropertyChanged事件。並確保更新此屬性的唯一方法是通過setter(不要直接更新後臺字段)。 – 2010-10-19 13:06:16