- 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();
}
}
}
}
编译并执行上述代码后,将显示以下屏幕:
建议您执行上述示例代码,并尝试其他一些属性和事件。