ObservableCollections 的 PropertyEventChangedHandler 未触发
PropertyEventChangedHandler of ObservableCollections not firing
我定义了一个 Observable 集合,如下所示,
public class PropertyFieldsInExcel
{
public string LongNames { get; set; }
public string ShortNames { get; set; }
public string CNames { get; set; }
}
static ObservableCollection<PropertyFieldsInExcel> Properties =
new ObservableCollection<PropertyFieldsInExcel>();
我有一个方法可以像这样更改 class 中某些元素的值,
public static void AutofillCell()
{
((INotifyPropertyChanged)Properties).PropertyChanged +=
new PropertyChangedEventHandler(PropertyChangedEvent);
Properties[i].CNames = "It works";
Properties[i].CNames = "Ha ha ha";
((INotifyPropertyChanged)Properties).PropertyChanged -=
new PropertyChangedEventHandler(PropertyChangedEvent);
}
当我如上所示为特定元素赋值时,事件没有触发。为什么?我犯了什么错误?
事件处理程序的代码是这样的,
private static void PropertyChangedEvent(object sender, PropertyChangedEventArgs e)
{
//Some code to be executed
}
两个问题:
1) PropertyFieldsInExcel
没有实现 INotifyPropertyChanged
2) ObservableCollection
可以在项目更改时通知您,但只有在您手动订阅所有项目的更改事件后才会通知您。
Uwe Keim 评论中的 link 给出了很好的解释和示例...
我定义了一个 Observable 集合,如下所示,
public class PropertyFieldsInExcel
{
public string LongNames { get; set; }
public string ShortNames { get; set; }
public string CNames { get; set; }
}
static ObservableCollection<PropertyFieldsInExcel> Properties =
new ObservableCollection<PropertyFieldsInExcel>();
我有一个方法可以像这样更改 class 中某些元素的值,
public static void AutofillCell()
{
((INotifyPropertyChanged)Properties).PropertyChanged +=
new PropertyChangedEventHandler(PropertyChangedEvent);
Properties[i].CNames = "It works";
Properties[i].CNames = "Ha ha ha";
((INotifyPropertyChanged)Properties).PropertyChanged -=
new PropertyChangedEventHandler(PropertyChangedEvent);
}
当我如上所示为特定元素赋值时,事件没有触发。为什么?我犯了什么错误?
事件处理程序的代码是这样的,
private static void PropertyChangedEvent(object sender, PropertyChangedEventArgs e)
{
//Some code to be executed
}
两个问题:
1) PropertyFieldsInExcel
没有实现 INotifyPropertyChanged
2) ObservableCollection
可以在项目更改时通知您,但只有在您手动订阅所有项目的更改事件后才会通知您。
Uwe Keim 评论中的 link 给出了很好的解释和示例...