- XAML 教程
- XAML - 首頁
- XAML - 概述
- XAML - 環境設定
- 在 macOS 上編寫 XAML 應用程式
- XAML 與 C# 程式碼
- XAML 與 VB.NET
- XAML - 構建塊
- XAML - 控制元件
- XAML - 佈局
- XAML - 事件處理
- XAML - 資料繫結
- XAML - 標記擴充套件
- XAML - 依賴屬性
- XAML - 資源
- XAML - 模板
- XAML - 樣式
- XAML - 觸發器
- XAML - 除錯
- XAML - 自定義控制元件
- XAML 有用資源
- XAML - 快速指南
- XAML - 有用資源
- XAML - 討論
XAML - 日曆
日曆類的繼承層次如下:
屬性
| 序號 | 屬性及描述 |
|---|---|
| 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 更改時發生。 |
示例
以下示例包含一個具有選擇和停用日期的日曆控制元件。當您單擊任何日期(停用日期除外)時,程式將使用該日期更新標題。
這是建立具有某些屬性和單擊事件的日曆的 XAML 程式碼。
<Window x:Class = "XAMLCalendar.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<StackPanel Orientation = "Horizontal">
<!--
Create a Calendar that displays dates through
Januarary 31, 2015 and has dates that are not selectable.
-->
<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>
</StackPanel>
</Grid>
</Window>
這是 C# 中的選擇事件實現。
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace XAMLCalendar {
/// <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;
// ... See if a date is selected.
if (calendar.SelectedDate.HasValue) {
// ... Display SelectedDate in Title.
DateTime date = calendar.SelectedDate.Value;
this.Title = date.ToShortDateString();
}
}
}
}
編譯並執行上述程式碼後,將顯示以下螢幕:
建議您執行上述示例程式碼,並嘗試其他一些屬性和事件。