From your initial description of the problem, sounds like you are using the AfterPropertyChanged event,
I am not the expert, but for what I can remember, the change of a property value causes the UI to envalidate (repaint) and recall all the Get methods of the entity's properties. I normally use something like this:
Public ReadOnly Property EnabledState() as Boolean
Get
Return GetCanEnable
end Get
End Property
Private function GetCanEnable() as Boolean
do some if....
End Function
If this doesn't help, maybe you can post your code example