INotifyPropertyChanged in C++/CLI
-
Wednesday, November 29, 2006 9:50 AM
When I implement INotifyPropertyChanged in C++/CLI:
(public ref class Task : public INotifyPropertyChanged)
A problem comes to me:
Error 3 error C3766: 'SomeData' must provide an implementation for the interface method 'void System::ComponentModel::INotifyPropertyChanged::PropertyChanged::add(System::ComponentModel::PropertyChangedEventHandler ^)'
I don't know why this error doesn't occur in C# when I implement the INotifyPropertyChanged ,but occur in C++/CLI .
Could you so kind to tell me how to resolve it?
Thank you very much!
Answers
-
Friday, December 01, 2006 4:45 AM
In C++ you don't need to check if the handler is null so the following should work:
void
OnPropertyChanged(String^ info) { PropertyChanged(this, gcnew PropertyChangedEventArgs(info)); }
All Replies
-
Thursday, November 30, 2006 12:26 AMNo one knows?
-
Thursday, November 30, 2006 4:48 AM
Did you implement the event? This works for me:
public
ref class Class1 : INotifyPropertyChanged { public: virtual event PropertyChangedEventHandler^ PropertyChanged; }; -
Friday, December 01, 2006 12:32 AM
But this does not work:
public
ref class Class1 : INotifyPropertyChanged { public: virtual event PropertyChangedEventHandler^ PropertyChanged;void OnPropertyChanged(String^ info)
{
PropertyChangedEventHandler^ handler= PropertyChanged;//error
if (handler != nullptr)
{
handler(this, gcnew PropertyChangedEventArgs(info));
}
}};
error C3918: usage requires "Task::PropertyChanged' to be a data member
-
Friday, December 01, 2006 4:45 AM
In C++ you don't need to check if the handler is null so the following should work:
void
OnPropertyChanged(String^ info) { PropertyChanged(this, gcnew PropertyChangedEventArgs(info)); } -
Friday, December 01, 2006 6:45 AMThank you very much

