but it's never in add or edit mode
When you add a record with the Add method, then the BO is placed in Add mode. And when you call Edit on a BO, then the BO is placed in Edit mode. If you have a BO set to ManageUIReadonlyState = False, then the fields will always be accessible and the IsDirtyChanged event will fire when a record is modified. Also, at a more granular level, when you set the IgnoreManageReadonlyUI property on a control to True, then it will be editable at all times.
That is the quick and dirty version of the editing state and the BOs managing the Readonly (or enabled) state of the controls. For a quick test here, just set the ManageUIReadonlyState property on the BO to false and see if all of the fields are enabled. Then you will know that the Edit is not being called. This should at least help you start troubleshooting the problem.