I have always used fx:Binding for datagrids and Value Objects.
fx:Binding source="dg.selectedItem as DTO" destination="dto"
At first, I used it religiously but then when I was debugging my program, I was finding times when it should have had a value but it did not and yet I could use the dg.selectedItem function and it did have the correct value. Evidently, the cause of this has something to do with processes being asynchronous. And so I am finding myself using dg.selectedItem more now and not using the variable created using the fx:Binding especially in critical areas such as persisting data. What I am asking is for someone who knows this topic really well who can explain to me when using the fx:Binding is reliable vs when its not.