是
您需要实现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