08-10-2011 03:03 AM
I have been developing a quite complex application with MeasurementStudio since version 8.1. Although it is very nice that almost all MeasurementStudio UI components inherit IPropertyNotify it appears the collections of those components do not receive the messages since they do not inherit from IBindingList, BindingList or IListItemChanged.
My application includes some quite complex user interactions with the WaveformGraph and ScatterGraph components. Many of the properties of these items and their XYCursor and Plot collections are controlled through a custom grid control. My solution to update notification up to this point has been creating classes such as:
class CustomWaveformGraph : public WaveformGraph
overriding the plot and cursor collections inside these new components with replacements such as:
class CustomXYCursorCollection : BindingList<XYCursor>
class CustomWaveformPlotCollection : BindingList<WaveformPlot>
These collection wrapper classes catch the PropertyChanged events and fire the OnListChanged event. Now when the wrappers are bound as a DataSource the grid control will update values such as the XYCursor XPosition and YPosition property values in real time as the user drags the mouse.
It seems like it would be a trivial change to MeasurementStudio to have the collection classes implement the proper update notification instead of just inheriting IList, ICollection and IEnumerable. Those same interfaces are covered by the more advanced IBindingList or BindingList.
Perhaps I am missing something very obvious. Any thoughts would be appreciated.
08-12-2011 09:23 AM
Hi dearman,
Thanks for pointing this out. I recommend you also create a product suggestion at the Product Suggestion Center.
Regards,
Brandon V.
Applications Engineering
National Instruments