- WPF 教程
- WPF - 首頁
- WPF - 概述
- WPF - 環境設定
- WPF - Hello World
- WPF - XAML 概述
- WPF - 元素樹
- WPF - 依賴屬性
- WPF - 路由事件
- WPF - 控制元件
- WPF - 佈局
- WPF - 佈局巢狀
- WPF - 輸入
- WPF - 命令列
- WPF - 資料繫結
- WPF - 資源
- WPF - 模板
- WPF - 樣式
- WPF - 觸發器
- WPF - 除錯
- WPF - 自定義控制元件
- WPF - 異常處理
- WPF - 本地化
- WPF - 互動
- WPF - 2D 圖形
- WPF - 3D 圖形
- WPF - 多媒體
- WPF 有用資源
- WPF - 快速指南
- WPF - 有用資源
- WPF - 討論
WPF - 日曆
日曆是一個控制元件,允許使用者使用視覺化日曆顯示來選擇日期。它提供了一些使用滑鼠或鍵盤的基本導航功能。日曆類的層次繼承如下:
日曆類常用屬性
| 序號 | 屬性及說明 |
|---|---|
| 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();
}
}
}
}
編譯並執行上述程式碼後,將生成以下視窗,其中顯示某些日期被選中,而某些日期被停用。
如果選擇另一個日期,它將顯示在此視窗的標題中。
我們建議您執行上述示例程式碼並嘗試其其他屬性和事件。