public class Employee : System.ComponentModel.INotifyPropertyChanged
{
private string _name;
public string Name
{
get{return _name;}
set{if(_name != value){
_name =value;
SendPropertyChanged("Name:"+value);
}}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}public class ClassTest
{
public ClassTest()
{
Gloal.Em.PropertyChanged -= Employee_PropertyChanged;
Gloal.Em.PropertyChanged += Employee_PropertyChanged;
}
private void Employee_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
Console.WriteLine(e.PropertyName);
}
}public class Gloal
{
public static Employee Em;
}static class Program
{
[STAThread]
static void Main(string[] args)
{
Gloal.Em = new Employee{Name = "a"}; ClassTest t = new ClassTest();
Gloal.Em.Name = "b";
ClassTest t1 = new ClassTest();
Gloal.Em.Name = "c";
ClassTest t2 = new ClassTest();
ClassTest t12 = new ClassTest();
Gloal.Em.Name = "d";
}
}
输出结果:
Name:b
Name:c
Name:c
Name:d
Name:d
Name:d
Name:d-= 为啥不起作用呢?
{
private string _name;
public string Name
{
get{return _name;}
set{if(_name != value){
_name =value;
SendPropertyChanged("Name:"+value);
}}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}public class ClassTest
{
public ClassTest()
{
Gloal.Em.PropertyChanged -= Employee_PropertyChanged;
Gloal.Em.PropertyChanged += Employee_PropertyChanged;
}
private void Employee_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
Console.WriteLine(e.PropertyName);
}
}public class Gloal
{
public static Employee Em;
}static class Program
{
[STAThread]
static void Main(string[] args)
{
Gloal.Em = new Employee{Name = "a"}; ClassTest t = new ClassTest();
Gloal.Em.Name = "b";
ClassTest t1 = new ClassTest();
Gloal.Em.Name = "c";
ClassTest t2 = new ClassTest();
ClassTest t12 = new ClassTest();
Gloal.Em.Name = "d";
}
}
输出结果:
Name:b
Name:c
Name:c
Name:d
Name:d
Name:d
Name:d-= 为啥不起作用呢?
Gloal.Em.PropertyChanged += Employee_PropertyChanged;
你减完了,又加上了
改为:
SendPropertyChanged("Name:");
试试~~
public ClassTest()
{
Gloal.Em.PropertyChanged -= Employee_PropertyChanged;
Gloal.Em.PropertyChanged += Employee_PropertyChanged;
}
private void Employee_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
Console.WriteLine(e.PropertyName);
}=》 public ClassTest()
{
Gloal.Em.PropertyChanged += Employee_PropertyChanged;
}
private void Employee_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
Console.WriteLine(e.PropertyName);
Gloal.Em.PropertyChanged -= Employee_PropertyChanged;
}说实话这样子在一个实例构造函数里面去改变一个静态变量 我觉得出问题很正常~