2014-04-25 4 views
1

J'ai besoin d'un contrôle Silverlight DatePicker qui permet à un utilisateur de sélectionner une année seulement ou de sélectionner YearMonth. me permettant de définir ce type de fonctionnalité dans quelque chose XAML comme ceci:Silverlight DatePicker Année Mois et Année seulement

<sdk:DatePicker my:DatePickerCalendar.IsYear="True" my:DatePickerFormat="yyyy"/> 

OU

<sdk:DatePicker my:DatePickerCalendar.IsMonthYear="True" my:DatePickerFormat="MM/yyyy"/> 
+0

s'il vous plaît expliquer ce que la question est. qu'avez-vous essayé? – pennstatephil

Répondre

1

Vous pouvez essayer cette version modifiée de contrôle silverlight Date de Picker pour afficher seulement le mois ou l'année

<sdk:DatePicker Name="datepicker1" 
       Height="23" 
       Width="150" 
       SelectedDateFormat="MonthYear" 
       CalendarMode="Year" /> 

DatePicker Month or year

1

La solution la plus simple que j'ai trouvée était une combinaison de

DateTimePicker start on year

private void dp_CalendarOpened(object sender, RoutedEventArgs e) 
    { 
     DatePicker dp = (DatePicker)sender; 
     Popup popup = (Popup)dp.Template.FindName("PART_Popup", dp); 
     Calendar cal = (Calendar)popup.Child; 

     cal.DisplayMode = CalendarMode.Year; 
     cal.DisplayModeChanged += cal_DisplayModeChanged; 
    } 

private void cal_DisplayModeChanged(object sender, CalendarModeChangedEventArgs e) 
    { 
     Calendar calendar = (Calendar)sender; 
     Popup popup = (Popup)calendar.Parent; 

     if (e.NewMode == CalendarMode.Month) 
     { 
      //calendar.DisplayMode = e.OldMode; 
      calendar.SelectedDate = calendar.DisplayDate.AddDays((calendar.DisplayDate.Day * -1) + 1).AddMonths(1).AddDays(-1); 
      popup.IsOpen = false; 

      calendar.DisplayModeChanged -= cal_DisplayModeChanged; 
     } 
    }