Xaml-calender
XAML-カレンダー
カレンダーは、ユーザーが視覚的なカレンダー表示を使用して日付を選択できるようにするコントロールを表します。 マウスまたはキーボードを使用した基本的なナビゲーション機能を提供します。 Calendarクラスの階層継承は次のとおりです-
プロパティ
以下は、Calendarクラスの最も一般的に使用されるプロパティです。
Sr.No. | Properties & Description |
---|---|
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 許可される選択の種類を示す値を取得または設定します。 |
方法
以下は、Calendarクラスの一般的に使用されるメソッドです。
Sr.No. | Method & Description |
---|---|
1 |
OnApplyTemplate 新しいテンプレートが適用されたときに、カレンダーコントロールのビジュアルツリーを構築します。 (FrameworkElement.OnApplyTemplate()をオーバーライドします) |
2 |
ToString 選択した日付のテキスト表現を提供します。 (Control.ToString()をオーバーライドします) |
イベント
以下は、Calendarクラスで一般的に使用されるイベントです。
Sr.No. | Event & Description |
---|---|
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#でのselectイベントの実装は次のとおりです。
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();
}
}
}
}
上記のコードをコンパイルして実行すると、次の画面が表示されます-
上記のサンプルコードを実行し、他のいくつかのプロパティとイベントを試すことをお勧めします。