Instance issue with example

This article was really helpfull, but I tried to implement it MVVM pattern without success, It seems that ContentViewContentPresenter does not work in the same instance as the CalendarView, how can I fix this?

Article: https://www.codeproject.com/Articles/35763/Creating-the-Microsoft-Outlook-Appointment-View?msg=5488235#xx5488235xx

My ViewModel:

namespace TestCode20180210.ViewModels
{
    public class MainViewModel : BindableBase
    {
        private ObservableCollection<Appointment> appointmentList = new ObservableCollection<Appointment>();
        public ObservableCollection<Appointment> AppointmentList
        {
            get { return appointmentList; }
        }
        public ICommand PushCommand { get { return new DelegateCommand(o => PushMethod()); } }
        private void PushMethod()
        {
            AppointmentList.Clear();
            for (int i = 1; i < 10; i++)
            {
                AppointmentList.Add(new Appointment()
                {
                    Start = DateTime.Now.Date.AddDays(i).AddHours(i).AddMinutes(59).AddSeconds(59),
                    Finish = DateTime.Now.Date.AddDays(i).AddHours(i+1).AddMinutes(59).AddSeconds(59),
                    Subject = "Meet with...",
                    Location = "Southwest...",
                    Organizer = "Jim..."
                });
            }
        }
    }
}

The View...

<Grid>
    <ListView Name="lvDataBinding" Style="{StaticResource DefaultStyleKey}"
              ItemsSource="{Binding Mode=OneWay}">
        <ListView.DataContext>
            <CollectionViewSource Source="{Binding AppointmentList, UpdateSourceTrigger=PropertyChanged}"/>
        </ListView.DataContext>
        <ListView.View>
            <controls:CalendarView ItemBeginBinding="{Binding Path=Start}" ItemEndBinding="{Binding Path=Finish}"/>
        </ListView.View>
    </ListView>
    <ContentPresenter Content="{Binding CurrentContentPresenter}"/>
    <Button Height="25" Width="120" Content="Push" Command="{Binding PushCommand}"/>
</Grid>

and just I changed this in the CalendarView...

private ObservableCollection<CalendarViewPeriod> periods = new ObservableCollection<CalendarViewPeriod>();
    public ObservableCollection<CalendarViewPeriod> Periods
    {
        get { return periods; }
    }

    public BindingBase ItemBeginBinding { get; set; }
    public BindingBase ItemEndBinding { get; set; }

    public CalendarView()
    {
        for (int i = 0; i < 3; i++)
        {
            Periods.Add(new CalendarViewPeriod()
            {
                Begin = DateTime.Now.Date.AddDays(i),
                End = DateTime.Now.Date.AddDays(i).AddHours(23).AddMinutes(59).AddSeconds(59)
            });
        }
    }

Thanks