>From my testing it appears that the property change notification should be a public event of type EventHandler that follows the naming convention <property name>Changed. If you define and fire this event when the property changes, all bound controls will be updated.
I too think that there should be a mechanism by which the CurrencyManager could be prodded to refresh the data in the controls. Perhaps in v.next... -----Original Message----- From: Ian Griffiths [mailto:[EMAIL PROTECTED]] Sent: Wednesday, May 29, 2002 4:28 AM To: [EMAIL PROTECTED] Subject: [DOTNET] Simple binding (WinForms) updates I am binding a property of a very straightforward class the Text property of a control: public class MySimpleSource { private int myAge; public int Age { get { return myAge; } set { myAge = value; } } } If I bind multiple controls (e.g. a load of TextBoxes) to this property on a single instance of this type everything works just great - if I modify the age in one control the update is successfully propagated to all of the other controls. But what I want to know is the 'correct' way of modifying the value in code and having this same update propagation work. The following is obviously insufficient: mySource.Age += 1; because there is no mechanism by which the data binding architecture can know that I've changed this property. This seems to work: mySource.Age += 1; BindingContext[mySource].CancelCurrentEdit(); but I feel kind of unclean after doing that... I think I'm just exploiting a side effect here - cancelling an edit will cause all bound control properties to be forced back to the current value of the data source. This doesn't feel like a good way of doing it. The following also works: TypeDescriptor.GetProperties(myDataSource)["Age"].SetValue( myDataSource, myDataSource.Age + 1); but that feels unnecessarily verbose. And although it seems like less of a hack from the point of view of making sure the updates happen, the late binding style is also something I'm not wholly comfortable with. What I really want is something like this: mySource.Age += 1; BindingContext[mySource].PropertyChanged("Age"); or even BindingContext[mySource].Refresh(); but I don't see any way of doing that. What's the official solution here? (Is it: "Don't do that. Use IBindingList if you want change notifications." If so, does this mean I can't do change notifications for non-list-like data sources? Or should I implement a list with just the one item?..) The documentation for BindableAttribute indicates that bindable properties should raise a "property change notification", but it's not entirely clear how you are supposed to do that. (Or at least it's not clear how to do it if your data source isn't list-like.) -- Ian Griffiths DevelopMentor You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.
