バージョン

カスタム エンティティ型の使用 (XamScheduler)

目的

このトピックでは、コントロールをカスタム エンティティ型を使用するデータ ソースへバインドする方法を説明します。

前提条件

トピック 目的

このトピックでは、XamScheduler コントロール シリーズの概要を説明します。

このトピックでは、コントロールを ScheduleListDataSource を使用してデータ ソースへバインドする方法を説明します。

概要

カスタム エンティティ オブジェクトのコレクションをアクティビティまたはリソースで使用するには、以下に説明される ScheduleListDataSource のマッピング設定を使用して XamScheduler がカスタム オブジェクトのフィールドを認識できます。ScheduleListDataSource クラスにマッピングを作成するために 2 つの主なプロパティがあります。

カスタム アクティビティ オブジェクトのマッピングを作成

以下の手順は、カスタム アクティビティ エンティティ オブジェクトのマッピングを作成します。

  1. ScheduleListDataSource インスタンスを作成します。

  2. その AppointmentItemsSource プロパティをアクティビティ エンティティ オブジェクト コレクションに設定します。

  3. カスタム アクティビティ オブジェクトおよび XamScheduler のアクティビティの間にマップする各プロパティのために AppointmentPropertyMappings コレクションでマッピングを追加します。

  4. マッピングは AppointmentPropertyMapping 型で、以下の主なプロパティを設定する必要があります。

    1. AppointmentProperty 型の Property は XamScheduler のアクティビティ フィールドを指定します。

    2. string 型の DataObjectPropertyName はカスタム アクティビティ エンティティ オブジェクトのプロパティ名を指定します。

  5. 手順 1 で作成された ScheduleListDataSource インスタンスを XamScheduler の DataSource プロパティに設定します。

Note
注:

各アクティビティで設定する必須フィールドは StartEnd、および Id です。

カスタム リソース オブジェクトのマッピングを作成

以下の手順は、カスタム リソース エンティティ オブジェクトのマッピングを作成します。

  1. ScheduleListDataSource インスタンスを作成します。

  2. その ResourceItemsSource プロパティをリソース エンティティ オブジェクト コレクションに設定します。

  3. カスタム リソース オブジェクトおよび XamScheduler のリソースの間にマップする各プロパティのために ResourcePropertyMappings コレクションでマッピングを追加します。

  4. マッピングは ResourcePropertyMapping 型で、以下の主なプロパティを設定する必要があります。

    1. ScheduleResourceProperty 型の Property は XamScheduler のリソース フィールドを指定します。

    2. string 型の DataObjectPropertyName はカスタム リソース エンティティ オブジェクトのプロパティ名を指定します。

  5. 手順 1 で作成された ScheduleListDataSource インスタンスを XamScheduler の DataSource プロパティに設定します。

Note
注:

各リソースで設定する必須フィールドは Id および DisplayName です。

コード例

以下のコード例は、予定およびリソースのカスタム マッピングを定義する方法を紹介します。コード スニペットは、Duty 型の予定のカスタム オブジェクトおよび Owner 型のリソースのカスタム オブジェクトを含む Duties および Owners プロパティを持つ CustomViewModel と呼ばれるビュー モデルを使用します。

XAML の場合:

<ig:XamScheduler>

    <ig:XamScheduler.BindingContext>
        <local:CustomViewModel />
    </ig:XamScheduler.BindingContext>

    <ig:XamScheduler.DataSource>
        <ig:ScheduleListDataSource
            AppointmentItemsSource="{Binding Duties}"
            ResourceItemsSource="{Binding Owners}">

        <ig:ScheduleListDataSource.AppointmentPropertyMappings>
            <ig:AppointmentPropertyMappingsCollection>
                <ig:AppointmentPropertyMapping Property="Start" DataObjectPropertyName="DutyStartTime" />
                <ig:AppointmentPropertyMapping Property="End" DataObjectPropertyName="DutyEndTime" />
                <ig:AppointmentPropertyMapping Property="Subject" DataObjectPropertyName="DutyShortName" />
                <ig:AppointmentPropertyMapping Property="Description" DataObjectPropertyName="DutyLongName" />
                <ig:AppointmentPropertyMapping Property="Location" DataObjectPropertyName="DutyPlace" />
                <ig:AppointmentPropertyMapping Property="ResourceId" DataObjectPropertyName="OwnerId"/>
                <ig:AppointmentPropertyMapping Property="Id" DataObjectPropertyName="DutyId"/>
            </ig:AppointmentPropertyMappingsCollection>
        </ig:ScheduleListDataSource.AppointmentPropertyMappings>

        <ig:ScheduleListDataSource.ResourcePropertyMappings>
            <ig:ResourcePropertyMappingsCollection>
                <ig:ResourcePropertyMapping Property="DisplayName" DataObjectPropertyName="OwnerName" />
                <ig:ResourcePropertyMapping Property="ColorScheme" DataObjectPropertyName="OwnerSpecificColor" />
                <ig:ResourcePropertyMapping Property="Id" DataObjectPropertyName="OwnerId" />
            </ig:ResourcePropertyMappingsCollection>
        </ig:ScheduleListDataSource.ResourcePropertyMappings>

    </ig:XamScheduler.DataSource>
</ig:XamScheduler>

C# の場合:

ScheduleListDataSource slds = new ScheduleListDataSource();
slds.AppointmentItemsSource = Duties;
slds.ResourceItemsSource = Owners;

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.Start,
        DataObjectPropertyName = nameof(Duty.DutyStartTime)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.End,
        DataObjectPropertyName = nameof(Duty.DutyEndTime)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.Subject,
        DataObjectPropertyName = nameof(Duty.DutyShortName)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.Description,
        DataObjectPropertyName = nameof(Duty.DutyLongName)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.Location,
        DataObjectPropertyName = nameof(Duty.DutyPlace)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.Id,
        DataObjectPropertyName = nameof(Duty.DutyId)
    });

slds.AppointmentPropertyMappings.Add(
    new AppointmentPropertyMapping()
    {
        Property = AppointmentProperty.ResourceId,
        DataObjectPropertyName = nameof(Duty.OwnerId)
    });

slds.ResourcePropertyMappings.Add(
    new ResourcePropertyMapping()
    {
        Property = ScheduleResourceProperty.DisplayName,
        DataObjectPropertyName = nameof(Owner.OwnerName)
    });

slds.ResourcePropertyMappings.Add(
    new ResourcePropertyMapping()
    {
        Property = ScheduleResourceProperty.ColorScheme,
        DataObjectPropertyName = nameof(Owner.OwnerSpecificColor)
    });

slds.ResourcePropertyMappings.Add(
    new ResourcePropertyMapping()
    {
        Property = ScheduleResourceProperty.Id,
        DataObjectPropertyName = nameof(Owner.OwnerId)
    });

関連トピック

トピック 目的

このトピックは Appointment アクティビティ型を説明します。

このトピックは、XamScheduler コントロールのリソース概念について説明します。