>if (Calendar1.SelectedDate.Date > avanti) e.Day.IsSelectable = false;
con questa funzione è vero che controlli se la data selezionata sia maggiore di "avanti", ma se è vero metti TUTTI i giorni del calendario come NON selezionabili. quindi il comportamento che vedi è giusto (rispetto a quello che hai scritto).
io agirei semplicemente sulla data "avanti" da paragonare con ogni giorno del calendario; sostituisci la riga in questione con questa:
if (e.Day.Date > avanti) e.Day.IsSelectable = false;
ciao ciao