Assuming you are using WPF ...
I would recommend creating a simple ListBox and binding the ItemsSource property to the Calendar SelectedDates property. Since the user selects and deselects the days from the Calendar, they will be added or removed from the list.
In addition, you can create the DateSpan and ValueConverter classes to group dates in a series into your DateSpan class. You can then apply the converter to the SelectedDates property so that when the user uses Shift-Select, they will see a date range, not a bunch of dates (assuming it's bad). Logic would not be too complicated.
There are many third-party tools, but no matter which control you use, the main problem remains: you want the user to know about all the selected elements, but you do not want to show every month that contains the selected day at the same time. The best answer I can imagine is a list.
source share