I am trying to understand how to update the UI if I have a read-only property that is dependent on another property, so that changes to one property update both UI elements
If you are only using bar for UI purposes, you could remove it from your model completely. You could bind the UI element to the foo property and use a custom value converter to change the result from foo into foo*foo.
In WPF there are often a lot of ways to accomplish the same thing. Often times, there isn't a correct way, just a personal preference.