سوف نتحدث في هذه المقاله عن (Interface) يسمى INotifyPropertyChanged و وظيفته ان يلاحظ التغيرات التي طرأت على Property في تطوير التطبيقات لزم ان ننتبه بأن ال GUI و ال Logic منفصلان تماما بمعنى، عندما تطور تطبيقا وهذا التطبيق يحتوي على GUI مثلا Form تحتوي على Button وعندما تضغط على ال Button تقوم بفعل شئ يجب الا تكتب ماسوف تفعله داخل Button click event ولكن Call methos مثال 1: private void button1_Click(object sender, EventArgs e) 2: { 3: DoSomething(); 4: }
اولا لكي تستخدم هذا ال Interface اكتب using System.ComponentModel; ثانيا اجعل Inherits from INotifyPropertyChanged your class و expose its member public event PropertyChangedEventHandler PropertyChanged ثالثا مع كل Property نريد ان نعرف اذا ماكنت عدلت ام لا نضع هذا الكود مثلا عندي Property تسمى Name
1: public string Name 2: { 3: get { return name; } 4: set { name = value; 5: OnPropertyChanged("Name");//point 4 6: }
هذا هو ال Class الذي يحتوي على ال Property التي اريد اعرف ما اذا تغيرت
1: using System.ComponentModel; //point 1 2: class Person:INotifyPropertyChanged //point 2 3: { 4: 5: string name; 6: public string Name 7: { 8: 9: get { return name; } 10: 11: set { name = value; 12: OnPropertyChanged("Name");//point 4 13: 14: } 15: 16: } 17: 18: protected void OnPropertyChanged(string property)//point 3 19: { 20: if (PropertyChanged != null) 21: { 22: PropertyChanged(this,new PropertyChangedEventArgs(property)); 23: } 24: 25: } 26: public event PropertyChangedEventHandler PropertyChanged;//point 2
و هذا هو ال GUI
1: Person p = new Person("FCI-H", 1); 2: p.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(p_PropertyChanged); 3: void p_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs 4: e) 5: { 6: switch (e.PropertyName) 7: { 8: case "Name": 9: nameTxt.Text = p.Name; 10: break; 11: } 12: } التسميات: C# |