WPF如何自定义选择年月控件-创新互联
这篇文章主要介绍了WPF如何自定义选择年月控件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
成都创新互联 主营淮阳网站建设的网络公司,主营网站建设方案,
成都app软件开发公司 ,淮阳h5
微信小程序 搭建,淮阳网站营销推广欢迎淮阳等地区企业咨询
具体内容如下
封装了一个选择年月的控件,XAML代码:
后台代码:
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
{
///
///
///
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 yearList = new List();
for (int i = currentYear - 20; i <= currentYear; i++)
{
yearList.Add(new { Text = i.ToString() });
}
cbYear.ItemsSource = yearList;
cbMonth.ItemsSource = new List() {
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;
}
}
}
} 效果图:
感谢你能够认真阅读完这篇文章,希望小编分享的“WPF如何自定义选择年月控件”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站建设公司 ,关注创新互联成都网站建设公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站建设公司 香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:WPF如何自定义选择年月控件-创新互联
浏览地址:
http://pwwzsj.com/article/phpch.html