在WPF中使用依赖项属性

时间:2010-10-19 12:18:03

标签: c# wpf dependency-injection managed-c++

我有一个从托管包装器公开的只读.NET属性,该包装器获取数据库的名称,假设属性名称为DBNameDBName可能因连接到WPF应用程序的数据库而异。此属性getter和setter也驻留在托管的.NET包装器中。我在我的WPF项目中使用此(DBName)属性。

我想在此(DBName).NET属性上创建依赖项属性,只要DBName发生更改,就会通知该属性。我想在WPF应用程序的状态栏上显示DBName

我能这样做吗?

1 个答案:

答案 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时都会调用该事件。