نوشته شده توسط
Mori Bone
سلام. ممنون میشم نمونه کدی قرار بدید
فرض کنيد کلاس Person رو داريم که خاصيت های Id و Name داره و يه ليست از نمونه های Person ساختيم و ItemsSource یه DataGrid رو برابر اين ليست قرار داديم. در اين صورت Datagrid رکوردهای موجود رو نمايش ميده. اما اگه مثلا Name يکی از اين Person ها رو تغيير بديم DataGrid اين تغيير رو متوجه نميشه و نمايش نميده(مقدار قبلی رو نمايش ميده) که طبيعی هم هست. چون DataGrid بدبخت از کجا ميخواد بفهمه که ويرايشی صورت گرفته(نميتونه که دايم چک کنه ببينه ويرايش داريم يا نه!) اما اگه خود Person ای که ويرايش ميشه به DataGrid خبر یده که من ويرايش شدم DataGrid هم تغييرات رو دريافت ميکنه و تو نمايش لحاظ ميکنه. برای اينکه کلاس Person اين قابليت رو داشته باشه که وقتی ويرايش شد خبر بده بايد interface ای به اسم INotifyPropertyChanged رو پياده سازی کنه و داريم:
class Person : INotifyPropertyChanged{
public event PropertyChangedEventHandler PropertyChanged;
public int Id { get; set; }
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (value != _name)
{
var PC = PropertyChanged;
if (PC != null)
PC(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
}
}