我有一个从托管包装器公开的只读.NET属性,该包装器获取数据库的名称,假设属性名称为DBName
。 DBName
可能因连接到WPF应用程序的数据库而异。此属性getter和setter也驻留在托管的.NET包装器中。我在我的WPF项目中使用此(DBName)属性。
我想在此(DBName).NET属性上创建依赖项属性,只要DBName
发生更改,就会通知该属性。我想在WPF应用程序的状态栏上显示DBName
。
我能这样做吗?
答案 0 :(得分:0)
是
您需要在包装器中实施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";
}
}
以这种方式使用代码意味着每次更新DBName时都会调用该事件。