Using the Multiple Selection of the RadCalendar control for Silverlight and WPF with MVVM

Monday, June 13, 2011 by XAML Team | Comments 0

Developing and supporting MVVM applications is easy and effective. That's why we want to create MVVM applications that follow this pattern. Sometimes the controls we use have some limitations. For example, list properties, which are read-only and do not allow us to create an appropriate binding to our view-models. It is normal for properties of list type to be read-only, because this is considered a good practice, but it becomes a problem for the MVVM pattern. In the ItemsControl this problem is solved with two properties - Items and ItemsSource. This blog post is about an example that demonstrates how to create an additional property for the SelectedDates property of the RadCalendar control.

Here is the demo application:

 

 

And the code of the main page is as follows:

<UserControl x:Class="CalendarAndViewModel.MainPage"
    xmlns:local="clr-namespace:CalendarAndViewModel"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <UserControl.DataContext>
        <local:SampleViewModel />
    </UserControl.DataContext>
 
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="25" />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
         
        <StackPanel Orientation="Horizontal" Grid.Row="0">
            <Button Content="Select many" Click="OnSelectManyClick" />
            <Button Content="Deselect all" Click="OnDeselectAllClick" />
        </StackPanel>
         
        <telerik:RadCalendar Grid.Row="1"
                             SelectionMode="Extended"
                             local:CalendarExtensions.TrackCalendarSelectedDates="True"
                             local:CalendarExtensions.SelectedDates="{Binding SelectedDates, Mode=TwoWay}" />
 
        <ListBox Grid.Row="2" ItemsSource="{Binding SelectedDates}">
 
        </ListBox>
    </Grid>
</UserControl>

 

 

The details of the implementation process are not a subject of this article, so I will just share the project here. If interested, you can download it from here.

Add comment

  1. Formatting options
       
     
     
     
     
       
  2. (optional, emails won't be shown on public pages)
  3. (optional)