#976 – SelectedItem Binding on an ItemsControl is Two-Way
December 24, 2013 2 Comments
When you use data binding to associate a property in your data context to the currently selected item in an ItemsControl (e.g. a ListBox), the data binding is by default two-way. That is:
- When the user selects a new item in the list, the value of the bound property changes
- If the value of the bound property changes, the selection in the list changes
Suppose that we bind the ItemsSource of a ListBox to a collection of Actor objects and that we bind the SelectedItem property of the ListBox to a SelectedActor property in our data context (of type Actor).
When the user selects an item, the value of the SelectedActor property changes. (Below, the labels are bound to sub-properties of SelectedActor).
If we instead change the value of SelectedActor (e.g. in code-behind after clicking a button), the currently selected item in the ListBox will change.