C# 使用NotifyPropertyWeaver时如何获取OnPropertyChange事件?
我使用NotifyPropertyWeaverMsBuildTask为自动属性处理NotifyPropertyChanged。我知道OnPropertyChanged()方法在属性值更改时会上升。但当这个方法被调用时,属性的值被改变,旧的值丢失。有没有办法得到旧的价值C# 使用NotifyPropertyWeaver时如何获取OnPropertyChange事件?,c#,inotifypropertychanged,automatic-properties,C#,Inotifypropertychanged,Automatic Properties,我使用NotifyPropertyWeaverMsBuildTask为自动属性处理NotifyPropertyChanged。我知道OnPropertyChanged()方法在属性值更改时会上升。但当这个方法被调用时,属性的值被改变,旧的值丢失。有没有办法得到旧的价值 tanx.INotifyPropertyChanged不提供获取属性先前值的方法;您必须实现自己的功能。INotifyPropertyChanged不提供获取属性先前值的方法;您必须实现自己的。如果您想在OnPropertyCha
tanx.
INotifyPropertyChanged
不提供获取属性先前值的方法;您必须实现自己的功能。INotifyPropertyChanged
不提供获取属性先前值的方法;您必须实现自己的。如果您想在OnPropertyChanged
中使用旧值,那么就这样编写它
public void OnPropertyChanged(string propertyName, object before, object after)
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
如果你的代码是这样的
public void OnPropertyChanged(string propertyName, object before, object after)
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这将被注入
public class Person : INotifyPropertyChanged
{
private string name;
public event PropertyChangedEventHandler PropertyChanged;
public string Name
{
get { return name; }
set
{
object before = Name;
name = value;
OnPropertyChanged("Name", before, Name);
}
}
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这里有更多信息
这符合您的要求吗?如果您想在
OnPropertyChanged
中使用旧值,请这样编写
public void OnPropertyChanged(string propertyName, object before, object after)
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
如果你的代码是这样的
public void OnPropertyChanged(string propertyName, object before, object after)
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这将被注入
public class Person : INotifyPropertyChanged
{
private string name;
public event PropertyChangedEventHandler PropertyChanged;
public string Name
{
get { return name; }
set
{
object before = Name;
name = value;
OnPropertyChanged("Name", before, Name);
}
}
public void OnPropertyChanged(string propertyName, object before, object after)
{
// do something with before/after
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这里有更多信息
这符合您的要求吗?您想将旧值用于什么?您想将旧值用于什么?