<p>I cannot get a two-way bind in WPF to work. </p>

<p>I have a string property in my app's main window that is bound to a TextBox (I set the mode to "TwoWay"). </p>

<p>The only time that the value of the TextBox will update is when the window initializes. </p>

<p>When I type into the TextBox, the underlying string properties value does not change. </p>

<p>When the string property's value is changed by an external source (an event on Click, for example, that just resets the TextBox's value), the change doesn't propagate up to the TextBox.</p>

<p>What are the steps that I must implement to get two-way binding to work properly in even this almost trivial example?</p>

We might need to see the code. Does your string property raise a PropertyChanged event? Or (even better) is it implemented as a DependencyProperty? If not, the bound TextBox won't know when the value changes.
As for typing into the TextBox and not seeing the property's value change, that may be because your TextBox isn't losing focus. By default, bound TextBoxes don't write their values back to the source property until focus leaves the control. Try tabbing out of it and seeing if the property value changes.