在本例的介面中有一個DatePicker作為訂座日期供用戶選擇,另外包括了兩個按鈕,其中一個是限制用戶在按下DatePicker後,只能看到前後一個月內的日子。而另一個按鈕則是用來讓用戶在按下DatePicker後,能夠看到的日子改變成前後三個月內。
以下是MainPage.xaml 的源碼,十分簡單:
1: <UserControl x:Class="DatePicker1.MainPage"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6: mc:Ignorable="d"
7: d:DesignHeight="144" d:DesignWidth="312" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
8:
9: <Grid x:Name="LayoutRoot" Background="White" Height="145">
10: <sdk:DatePicker Height="23" HorizontalAlignment="Left" Margin="98,33,0,0" Name="datePicker1" VerticalAlignment="Top" Width="120" />
11: <sdk:Label Height="28" HorizontalAlignment="Left" Margin="28,37,0,0" Name="label1" VerticalAlignment="Top" Width="120" Content="訂座日期 : " />
12: <Button Content="只可選前後一個月內的日期" Height="23" HorizontalAlignment="Left" Margin="98,71,0,0" Name="button1" VerticalAlignment="Top" Width="170" Click="button1_Click" />
13: <Button Content="還原可選前後三個月內的日期" Height="23" HorizontalAlignment="Left" Margin="98,100,0,0" Name="button2" VerticalAlignment="Top" Width="170" Click="button2_Click" />
14: </Grid>
15: </UserControl>
至於背後MainPage.xaml.cs 的源碼如下:
1: using System;
2: using System.Windows.Controls;
3:
4: namespace DatePicker1
5: {
6: public partial class MainPage : UserControl
7: {
8: public MainPage()
9: {
10: InitializeComponent();
11: SetDisplayDateRange(); //預設可選前後三個月內的日期
12: }
13:
14: private void SetDisplayDateRange(int month = 3 )
15: {
16: //每月的最後一日
17: int[] EndDayOfYear = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
18:
19: DateTime StartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
20: StartDate = StartDate.AddMonths(-month);
21:
22: DateTime EndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
23: EndDate = EndDate.AddMonths(month);
24:
25: if (DateTime.IsLeapYear(EndDate.Year))
26: {
27: EndDayOfYear[1] = 29; //如果是Leap Year, 二月要是29日
28: }
29:
30: EndDate = new DateTime(EndDate.Year, EndDate.Month, EndDayOfYear[EndDate.Month - 1]);
31:
32: datePicker1.DisplayDateStart = (StartDate).Date;
33: datePicker1.DisplayDateEnd = (EndDate).Date;
34: }
35:
36: private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
37: {
38: SetDisplayDateRange(1); //呼叫function限制可選前後一個月內的日期
39: }
40:
41: private void button2_Click(object sender, System.Windows.RoutedEventArgs e)
42: {
43: SetDisplayDateRange(); //呼叫function還原可選前後三個月內的日期
44: }
45:
46: }
47: }
最後附上程式碼地址供下載參加:
https://docs.google.com/open?id=0BxRiNrIXEFArNzE0c1cwUDVTLWlTd3ZyUlNQVlRYUQ
沒有留言:
張貼留言