Wpf-calendar

提供:Dev Guides
移動先:案内検索

WPF-カレンダー

カレンダーは、視覚的なカレンダー表示を使用してユーザーが日付を選択できるようにするコントロールです。 マウスまたはキーボードを使用した基本的なナビゲーションを提供します。 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. Events & Description
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();
         }
      }

   }
}

上記のコードをコンパイルして実行すると、次のウィンドウが生成され、一部の日付が選択されている間は一部が黒く表示されます。

カレンダーの出力

別の日付を選択すると、このウィンドウのタイトルに日付が表示されます。

日付の選択

上記のサンプルコードを実行し、他のプロパティとイベントを試すことをお勧めします。