InfoPath Custom Controls that don't fire OnPropertyChange Notifications
InfoPath has a really powerful feature to allow users to create their own custom controls for InfoPath forms. One requirement that is fairly essential for controls to work in InfoPath is that the controls must fire OnPropertyChange Notifications so that InfoPath knows to grab the information. The unfortunate thing is that there are some already built controls which don't fire OnPropertyChange Notifications but they would be incredibly useful in an InfoPath form.
Here's what to do if you want to use these types of controls. InfoPath will grab the value before you save, so if you don't need other parts of the form to interact with the data from the ActiveX control, then you don't really need to do anything. Your data from the ActiveX control will always get saved.
Also, there will be some form developers that will want to pull data from the ActiveX control before it is saved (maybe for example on a OnAfterChange or a button click). If you want to do this, you should call XDocument.ForceUpdate(); before grabbing the value. This will cause InfoPath to query the ActiveX control for the value and place it into the XML so then your business logic will be able to get the correct value.