WPF - 日曆



日曆是一個控制元件,允許使用者使用視覺化日曆顯示來選擇日期。它提供了一些使用滑鼠或鍵盤的基本導航功能。日曆類的層次繼承如下:

Hierarchical of Calendar

日曆類常用屬性

序號 屬性及說明
1

BlackoutDates

獲取標記為不可選擇的日期集合。

2

CalendarButtonStyle

獲取或設定與控制元件內部 CalendarButton 物件關聯的樣式。

3

CalendarDayButtonStyle

獲取或設定與控制元件內部 CalendarDayButton 物件關聯的樣式。

4

CalendarItemStyle

獲取或設定與控制元件內部 CalendarItem 物件關聯的樣式。

5

DisplayDate

獲取或設定要顯示的日期。

6

DisplayDateEnd

獲取或設定日曆中可用日期範圍的最後一天。

7

DisplayDateStart

獲取或設定日曆中可用的第一天。

8

DisplayMode

獲取或設定一個值,該值指示日曆顯示月份、年份還是十年。

9

FirstDayOfWeek

獲取或設定被認為是一週開始的一天。

10

IsTodayHighlighted

獲取或設定一個值,該值指示是否突出顯示當前日期。

11

SelectedDate

獲取或設定當前選定的日期。

12

SelectedDates

獲取選定日期的集合。

13

SelectionMode

獲取或設定一個值,該值指示允許哪種型別的選擇。

日曆類常用方法

序號 方法及說明
1

OnApplyTemplate

應用新模板時,構建日曆控制元件的視覺化樹。(重寫 FrameworkElement.OnApplyTemplate().)

2

ToString

提供所選日期的文字表示。(重寫 Control.ToString().)

日曆類常用事件

序號 事件及說明
1

DisplayDateChanged

當 DisplayDate 屬性更改時發生。

2

DisplayModeChanged

當 DisplayMode 屬性更改時發生。

3

SelectedDatesChanged

當 SelectedDates 屬性返回的集合更改時發生。

4

SelectionModeChanged

當 SelectionMode 更改時發生。

示例

  • 讓我們建立一個名為 WPFCalenderControl 的新 WPF 專案。

  • 從工具箱中拖動日曆控制元件,並在屬性視窗中更改背景顏色。

  • 現在切換到 XAML 視窗,您將在其中看到日曆及其背景的 XAML 標記。

  • 新增更多屬性來設定禁止選擇的日期和選擇事件,如下面的 XAML 程式碼所示。

<Window x:Class = "WPFCalenderControl.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   xmlns:local = "clr-namespace:WPFCalenderControl" 
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <Calendar Margin = "20" SelectionMode = "MultipleRange"
         IsTodayHighlighted = "false" DisplayDate = "1/1/2015" 
         DisplayDateEnd = "1/31/2015" SelectedDatesChanged = "Calendar_SelectedDatesChanged" 
         xmlns:sys = "clr-namespace:System;assembly = mscorlib"> 
			
         <Calendar.BlackoutDates> 
            <CalendarDateRange Start = "1/2/2015" End = "1/4/2015"/> 
            <CalendarDateRange Start = "1/9/2015" End = "1/9/2015"/> 
            <CalendarDateRange Start = "1/16/2015" End = "1/16/2015"/> 
            <CalendarDateRange Start = "1/23/2015" End = "1/25/2015"/> 
            <CalendarDateRange Start = "1/30/2015" End = "1/30/2015"/> 
         </Calendar.BlackoutDates> 
			
         <Calendar.SelectedDates> 
            <sys:DateTime>1/5/2015</sys:DateTime> 
            <sys:DateTime>1/12/2015</sys:DateTime> 
            <sys:DateTime>1/14/2015</sys:DateTime> 
            <sys:DateTime>1/13/2015</sys:DateTime> 
            <sys:DateTime>1/15/2015</sys:DateTime> 
            <sys:DateTime>1/27/2015</sys:DateTime> 
            <sys:DateTime>4/2/2015</sys:DateTime> 
         </Calendar.SelectedDates> 
			
         <Calendar.Background> 
            <LinearGradientBrush EndPoint = "0.5,1" StartPoint = "0.5,0"> 
               <GradientStop Color = "#FFE4EAF0" Offset = "0" /> 
               <GradientStop Color = "#FFECF0F4" Offset = "0.16" /> 
               <GradientStop Color = "#FFFCFCFD" Offset = "0.16" /> 
               <GradientStop Color = "#FFD80320" Offset = "1" /> 
            </LinearGradientBrush> 
         </Calendar.Background> 
			
      </Calendar>
		
   </Grid> 
	
</Window>

C# 中的選擇事件實現如下:

using System; 
using System.Windows;	
using System.Windows.Controls;  

namespace WPFCalenderControl { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
      }  
		
      private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { 
         var calendar = sender as Calendar; 
			
         if (calendar.SelectedDate.HasValue) { 
            DateTime date = calendar.SelectedDate.Value; 
            this.Title = date.ToShortDateString(); 
         }  
      } 
		
   } 
}

編譯並執行上述程式碼後,將生成以下視窗,其中顯示某些日期被選中,而某些日期被停用。

Output of Calendar

如果選擇另一個日期,它將顯示在此視窗的標題中。

Select Date

我們建議您執行上述示例程式碼並嘗試其其他屬性和事件。

wpf_controls.htm
廣告
© . All rights reserved.