首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight Calendar 选择月份的时候能不能不进选择日期的解决方案

2013-01-25 
silverlight Calendar 选择月份的时候能不能不进选择日期的这个点击月份的时候就自动进去选择几号的了能不

silverlight Calendar 选择月份的时候能不能不进选择日期的
silverlight Calendar 选择月份的时候能不能不进选择日期的解决方案

这个点击月份的时候就自动进去选择几号的了
能不能到选择月份就终止了?
[解决办法]
楼主可以修改Silverlight Toolkit代码实现,创建一个新的依赖属性实现。
可以参考以下代码可以实现Calendar只选月份:


public CalendarMode CalendarMode
{
  get { return (CalendarMode)GetValue(CalendarModeProperty); }
  set { SetValue(CalendarModeProperty, value); }
}

public static readonly DependencyProperty CalendarModeProperty =
  DependencyProperty.Register(
  "CalendarMode",
  typeof(CalendarMode),
  typeof(DatePicker),
  new PropertyMetadata(OnCalendarModeChanged));
    
private static void OnCalendarModeChanged(DependencyObject d, 
                                          DependencyPropertyChangedEventArgs e)
{
  DatePicker dp = d as DatePicker;

  // get the new value into a calendar mode variable.
  CalendarMode cm = (CalendarMode)e.NewValue;

  if (dp != null)
  {
    dp._calendar.DisplayMode = cm;
  }
}


private void InitializeCalendar()
{
  _calendar = new Calendar();
  _calendar.DayButtonMouseUp += new MouseButtonEventHandler(Calendar_DayButtonMouseUp);
  _calendar.DisplayDateChanged += new EventHandler<CalendarDateChangedEventArgs>
                                      (Calendar_DisplayDateChanged);
  _calendar.SelectedDatesChanged += new EventHandler<SelectionChangedEventArgs>
                                        (Calendar_SelectedDatesChanged);
  _calendar.MouseLeftButtonDown += new MouseButtonEventHandler
                                      (Calendar_MouseLeftButtonDown);
  _calendar.KeyDown += new KeyEventHandler(Calendar_KeyDown);
  _calendar.SelectionMode = CalendarSelectionMode.SingleDate;
  _calendar.SizeChanged += new SizeChangedEventHandler(Calendar_SizeChanged);
  _calendar.IsTabStop = true;
  #region Juan Mejia - Modification
  _calendar.DisplayMode = this.CalendarMode;
  _calendar.DisplayModeChanged += new EventHandler<CalendarModeChangedEventArgs>
                                      (Calendar_DisplayModeChanged);
  #endregion


}


private void Calendar_DisplayModeChanged(object sender, CalendarModeChangedEventArgs e)
{
  if (this.CalendarMode == CalendarMode.Year)
  {
    if (_calendar.DisplayMode == CalendarMode.Month)
    {
      _calendar.DisplayMode = CalendarMode.Year;

      if (_popUp.IsOpen)
      {
        this.SelectedDate = _calendar.SelectedMonth;
        this._popUp.IsOpen = false;
      }
    }
  }
}

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



源代码下载:
http://bbs.silverlightchina.net/forum.php?mod=viewthread&tid=14225&extra=

也可以参考学习以下教程:
http://silverlightchina.net/html/tips/2010/0101/516.html


http://silverlightchina.net/html/tips/2010/0929/2230.html

热点排行