后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace SunCreate.CombatPlatform.Client
{
/// <summary>
///
/// </summary>
public partial class DateMonthPicker : UserControl, INotifyPropertyChanged
{
private DateTime _selectedMonth;
public static DependencyProperty selectedTimeProperty;
static DateMonthPicker()
{
selectedTimeProperty = DependencyProperty.Register("SelectedMonth", typeof(DateTime), typeof(DateMonthPicker), new PropertyMetadata(DateTime.Now, new PropertyChangedCallback(SelectedMonthChanged)));
}
public DateMonthPicker()
{
InitializeComponent();
int currentYear = DateTime.Now.Year;
int currentMonth = DateTime.Now.Month;
List<object> yearList = new List<object>();
for (int i = currentYear - 20; i <= currentYear; i++)
{
yearList.Add(new { Text = i.ToString() });
}
cbYear.ItemsSource = yearList;
cbMonth.ItemsSource = new List<object>() {
new { Text = "1" },
new { Text = "2" },
new { Text = "3" },
new { Text = "4" },
new { Text = "5" },
new { Text = "6" },
new { Text = "7" },
new { Text = "8" },
new { Text = "9" },
new { Text = "10" },
new { Text = "11" },
new { Text = "12" }};
this._selectedMonth = DateTime.Now;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
cbYear.SelectedValue = _selectedMonth.Year.ToString();
cbMonth.SelectedValue = _selectedMonth.Month.ToString();
}
private static void SelectedMonthChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
(obj as DateMonthPicker).ChangeSelect(e.NewValue);
}
private void ChangeSelect(object value)
{
_selectedMonth = (DateTime)value;
cbYear.SelectedValue = _selectedMonth.Year.ToString();
cbMonth.SelectedValue = _selectedMonth.Month.ToString();
}
public DateTime SelectedMonth
{
get { return (DateTime)this.GetValue(DateMonthPicker.selectedTimeProperty); }
set { this.SetValue(DateMonthPicker.selectedTimeProperty, value); }
}
public DateTime StartDay
{
get
{
return this._selectedMonth.AddDays(1 - this._selectedMonth.Day).Date;
}
}
public DateTime EndDay
{
get
{
return this.StartDay.AddMonths(1).AddDays(-1);
}
}
#region INotifyPropertyChanged 成员
public event PropertyChangedEventHandler PropertyChanged;
private void SendPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
private void cbYear_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cb = sender as ComboBox;
if (this._selectedMonth != DateTime.MinValue && cb.SelectedValue != null)
{
this._selectedMonth = new DateTime(Convert.ToInt32(cb.SelectedValue), this._selectedMonth.Month, 1);
SelectedMonth = this._selectedMonth;
}
}
private void cbMonth_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cb = sender as ComboBox;
if (this._selectedMonth != DateTime.MinValue && cb.SelectedValue != null)
{
this._selectedMonth = new DateTime(this._selectedMonth.Year, Convert.ToInt32(cb.SelectedValue), 1);
SelectedMonth = this._selectedMonth;
}
}
}
}










