I would generally use the GUI component callback in my class to update the class property or I would use a dependent property whose get function queries the UI, but the latter only if it always has the UI.
In the other direction then I would do as you say and add a PostSet listener to the property and in its callback update the UI from the property.
Obviously if the GUI component is optional these bits of functionality would need to be wrapped in if statements to ensure the GUI component is there first. In the first case this is no problem as the callback would not exist without the UI and in the second case a simple check for the UI or the specific component before writing to it would work fine.