標籤:wp8.1 datepicker和timepicke minuteincrement分鐘最小量 datepicker設定最大和最小年份 datepicker年月日選擇框是否顯示
開篇之前,推薦王磊老師的Windows 8.1中關於DatePicker和TimePicker的講解
連結:重新想象 Windows 8.1 Store Apps (73) - 新增控制項: DatePicker, TimePicker
首先Windows Phone 8.1的這兩個選取器的使用和在Windows 8.1中的使用差不多。
1.前台DatePicker和TimePicker標籤的使用沒什麼太大的問題,其中Header屬性其實就是給選取器起個名字而已
DateChanged和TimeChanged分別表示選中日期或者時間變化時觸發的事件
2.對於日期格式的問題,可以通過微軟內建的模板設定顯示格式(這個有很多種組合方式,按需書寫,需要自己多摸索
摸索,最好查看MSDN文檔)
連結:格式規範連結
3.對於Orientation屬性的設定,我沒有在wp中看出什麼區別,不管設為Horizontal或者Vertical都是如顯示的一樣
4.在後台中可以對日期和時間選取器進行額外的設定和規定,以控制它的顯示和行為
a.控制項預設顯示的日期是當天的日期,但我們可以對他進行控制,達到顯示我們要求顯示的日期
以下datePicker,datePicker1,datePicker3是前台DatePicker選取器的x:name屬性值
方法一:datePicker1.Date = datePicker1.Date.AddYears(n);//控制顯示的年份,n表示整數,最終年份顯示為當前年
份加上n,可以正數可以負數
比如n=2,則當前2014+2=2016,顯示2016年,如果n=-1,則是2012年
同理datePicker1.Date = datePicker1.Date.AddMonths(-2);和datePicker1.Date = datePicker1.Date.AddDays(3);,原
理一樣
方法二:datePicker1.Date = DateTimeOffset.Now.AddYears(2);這個是依附你的機器時間來的,也就是說在你電腦
上的時間的基礎上加減運算後顯示日期
建議方法二少用,因為一旦以上兩種方法混用,有時後者會對前者有影響。
比如之前設定為:
datePicker1.Date = datePicker1.Date.AddYears(2);
datePicker1.Date = DateTimeOffset.Now.AddMonths(2);
那麼,年份設定會生效,依舊會顯示當前年份,而不會再當前年份上加上2顯示。而月份卻可以正常加上2後顯示
b.控制日期控制項最大年份和最小年份顯示的設定,但月份和日沒有這樣的設定!如下
datePicker.MinYear = datePicker.Date.AddYears(-4); //控制控制項允許的最小年份
datePicker.MaxYear = datePicker.Date.AddYears(4); //控制控制項允許的最大年份
或者:
datePicker.MinYear = DateTimeOffset.Now.AddYears(-4); //控制控制項允許的最小年份
datePicker.MaxYear = DateTimeOffset.Now.AddYears(4); //控制控制項允許的最大年份
以上兩種方法區別都可以,第二種依附於電腦上的時間來設定的。直觀一點的話,效果如所示:
c.控制控制項的Year,Month,Day選擇框是否顯示,預設是true(顯示),如果是以下情形,則如所示:
datePicker.YearVisible = false;
datePicker.MonthVisible = true;
datePicker.DayVisible = true;
可以看出就剩月份和日可以選擇了。三種任你組合!
d.設定日期控制項的日曆系統,為了效果明顯一點,我這邊設定日本的,因為日本的都是以天皇年號來的
datePicker3.CalendarIdentifier = CalendarIdentifiers.Japanese;//這邊設為日本日曆系統
那麼還有關於時間選取器的就直接上代碼,上面有注釋
只要注意分鐘最小分量的設定對時間點的影響就可以了,貌似小時和秒沒有最小分量的設定!
//如果你控制控制項顯示的時間不是分鐘選擇框最小分量的整數倍,則分鐘一欄從設定值自動調節到附近最接近最小分量值整數倍的那一數值//控制控制項顯示的時間timePicker.Time = new TimeSpan(3,22,0);//控制控制項分鐘選擇框的最小分量timePicker.MinuteIncrement = 3;//控制項時間選擇控制項是12小時制還是24小時制timePicker.ClockIdentifier = ClockIdentifiers.TwelveHour;//選擇12小時制,也可以ClockIdentifiers.TwentyFourHour設定為24小時制
附更直觀一些吧:注意我設定的是22分,但由於設定了分鐘的最下分量為3,所以顯示的時候實際顯示的是21分
注意看這邊分鐘就是按3分鐘為一單位:
5.日期,時間改變觸發的事件
private void datePicker_DateChanged(object sender, DatePickerValueChangedEventArgs e){ txtMsg.Text = e.NewDate.ToString("yyyy-mm-dd hh:mm:ss");}//格式規範連結:http://msdn.microsoft.com/zh-cn/library/ee372286.aspxprivate void timePicker_TimeChanged(object sender, TimePickerValueChangedEventArgs e){ txtMsg1.Text = e.NewTime.ToString("g");}
思考,如果當前是12月,使用datePicker1.Date = datePicker1.Date.AddMonths(2);來控制控制項顯示月份,那麼控制項顯
示的月份是2還是14呢?
顯然14是不合常規,如果是的話怎麼辦呢,編程還是要不斷動手不斷動腦,問題要大量去實踐才能解答。
以上就是我的一些認識和感悟,不一定都是對的,大家互相學習吧。
Windows Phone 8.1中日期和時間選取器DatePicker,TimePicker