C# 在特定对象上引发PropertyChanged事件

C# 在特定对象上引发PropertyChanged事件,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,所以我有一个类(称为DataClass)来处理一些应用程序数据。该类实现了INotifyPropertyChanged接口。目前,我在ViewModelBase类中创建了这个类的两个静态实例(DataRx和DataTx),我想分别在每个类上引发PropertyChanged事件。 在ViewModel上,实现是: DataRx.PropertyChanged += DataRx_PropertyChanged; DataTx.PropertyChanged += DataTx_PropertyC

所以我有一个类(称为DataClass)来处理一些应用程序数据。该类实现了INotifyPropertyChanged接口。目前,我在ViewModelBase类中创建了这个类的两个静态实例(DataRx和DataTx),我想分别在每个类上引发
PropertyChanged
事件。 在ViewModel上,实现是:

DataRx.PropertyChanged += DataRx_PropertyChanged;
DataTx.PropertyChanged += DataTx_PropertyChanged;
问题是,当我更改DataRx对象的任何DataClass属性时,
DataRx\u PropertyChanged
DataTx\u PropertyChanged
方法都被激活,而不仅仅是
DataRx\u PropertyChanged

如何仅在所需对象上激活事件

编辑:

接口实现如下:

public event PropertyChangedEventHandler PropertyChanged;
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName]string name = null)
{
    if (Equals(field, value))
    {
        return false;
    }
    field = value;
    OnPropertyChanged(name);
    return true;
 }  
 protected void OnPropertyChanged([CallerMemberName]string name = null)
 {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
 }
public event propertychangedventhandler PropertyChanged;
受保护的bool SetProperty(ref T字段,T值,[CallerMemberName]字符串名称=null)
{
if(等于(字段、值))
{
返回false;
}
字段=值;
OnPropertyChanged(名称);
返回true;
}  
受保护的void OnPropertyChanged([CallerMemberName]字符串名称=null)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(名称));
}

您可能正在声明PropertyChangedEventHandler静态

INotifyPropertyChanged接口的正确实现应类似于以下内容:

private string myProperty;

public event PropertyChangedEventHandler PropertyChanged;

// This method is called by the Set accessor of each property.
// The CallerMemberName attribute that is applied to the optional propertyName
// parameter causes the property name of the caller to be substituted as an argument.
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

public string MyProperty
{
    get
    {
        return myProperty;
    }
    set
    {
        if (myProperty != value)
        {
            myProperty = value;
            NotifyPropertyChanged();
        }
    }
}

在DataClass的一个实例上设置属性会触发另一个实例的PropertyChanged事件时,您的实现有问题。