(I'm pretty new to WPF, so this question may seem obvious or inconsistent.)
There is a requirement to edit some piece of application's underlying business data from a child modal window, and to update the data only if the user presses OK button in this window. Let's call this window SettingsDialog.
In this case, is it still reasonable to use WPF data binding to bind SettingsDialog's controls to business data? (And if so, how to update business data only when the user presses SettingsDialog's OK button?)
Or is it better to manually assign SettingsDialog's controls' values from business data while SettingsDialog is showing, and then assign them back only if user presses OK button?
What are arguments of correct choice (smaller or clearer code, performance, extensibility)?
Is there some acknowledged design pattern for similar cases?
EDIT: I marked Bubblewrap's answer as accepted, because it fits my own concrete case the most. Though, Guard's and John's answers also seem acceptable.
To summarize: using data binding has some advantages. It allows SettingsDialog to know nothing about business object internal connections and dependencies (if there are any), allows to switch later from modal to non-modal mode easily, reduces dependencies between GUI and business data.
To implement changing of object upon OK button click, object cloning/assigning may be used, or object may implement IEditableObject interface.
In some trivial cases, though, using data binding may have some unnecessary overhead.