All of the Calendar properties are dependency properties which means that they can be bound to almost any object.

To enable TwoWay binding, the object that the Calendar is bound to should implement the INotifyPropertyChanged interface. The following example shows how to bind the SelectedDate property of the calendar to a business object, the OrderInfo.

In this example our business object, the Order info has a property ArrivalDate which we bind the calendar and the TextBlock to. When the property changes, everything is updated accordingly regardless of whether we update the value in code (the click handler) or via the TwoWay binding.

Please note that the SelectedDate property is of type Nullable<DateTime>. By default if the value is null the TwoWay binding will not update the DateTime property, so its value will be the last selected date.