I'd keep the binding to at most one level: UI controls to another object. Otherwise, you might get into a cascading updates problem where everything is firing and updating all the time. That's what I'm doing with MVVM. The View (including the JavaFX Controller) binds its controls (ex TextFields) with a special ViewModel bean of JavaFX properties.