public class ScheduleListDataSource : ScheduleDataSource, Xamarin.Forms.IElementController
ScheduleListDataSource クラスは、Infragistics.Scheduler.Appointment および Infragistics.Scheduler.ScheduleResource データを提供する「標準 CLR オブジェクト」(POCO) のリストにバインドする機能を提供します。既存のクラスが必須な型のプロパティを公開する場合、そのクラスが予定またはリソースを表すために使用できます。これらのプロパティ名が対応する予定/リソース プロパティと同じ場合、このプロパティが対応する予定/リソース プロパティに自動的にバインドされます。名前が異なる場合、プロパティ マッピング サポートは AppointmentPropertyMappings および ResourcePropertyMappings コレクションで提供されます。
AppointmentItemsSource プロパティは IEnumerable インターフェイスを実装する値を受けます。ただし、簡易な IEnumerable 実装で特定の機能はサポートされません。特に新しい予定の作成と既存の予定の削除がサポートされません。IEnumerable インターフェイスが変更通知方法を提供しないため、項目ソースへの外部変更が ScheduleListDataSource クラスで実行されません。
IList インターフェイスを実装する項目ソースの場合、予定の作成と削除が ScheduleListDataSource API でサポートされますが、IEnumerable 実装と同じように変更通知方法を提供しないため項目ソースへの外部変更が ScheduleListDataSource で実行されません。注: List<T> クラスはこのカテゴリにあります。
コンテンツ変更メソッドおよび通知メソッドが存在するため、IList および INotifyCollectionChanged インターフェイスを実装する項目ソースは多数の機能を提供します。この場合、作成および削除が ScheduleListDataSource API およびコレクションへの外部変更によってサポートされます。可能な場合、コンテンツ変更および通知方法をサポートする ObservableCollection<T> クラスを使用してください。
また、新しい予定を作成するには、基本データ オブジェクト クラスから公開される公開用パラメーターなしコンストラクターが要件です。クラスが公開用パラメーターなしコンストラクターを公開しない場合、CreateAppointmentDataObjectCallback を使用して新しい Appointment オブジェクトが作成されたときに呼び出されるファクトリ メソッドを設定できます。パラメーターなしコンストラクターまたはファクトリ メソッドがない場合、項目ソースのコンテンツ変更のサポートに関係なく、新しい予定の追加はサポートされません。
ResourceItemsSource プロパティは AppointmentItemsSource と同じように操作しますが、リソースの追加/削除がユーザー インターフェイスでサポートされていないため、作成および削除をサポートするリスト型の使用が重要になりません。
そのオブジェクトに実行される外部の変更をサポートするには、予定またはリソースのバッキング ストアを提供する POCO オブジェクトが INotifyPropertyChanged インターフェイスを実装する必要があります。このようなプロパティ変更通知メカニズムなしで ScheduleListDataSource はプロパティ値に加えた変更に反応できません。そのため、同期された予定またはリソース オブジェクトの対応プロパティを保持できません。予定のプロパティ値および API を介した ScheduleResource クラスの変更は、ScheduleListDataSource によって直ちに反映され、更に基になるデータ オブジェクトへ伝達が直ちに返されます。
以下の表は、それぞれの使用シナリオで利用できる機能の概要です。
インターフェイス | 機能 |
---|---|
IEnumerable | 基本的な機能のみ提供します。予定/リソースがリストの各項目に作成されますが、新しい項目の追加および既存項目の削除はサポートされません。 |
IList | 予定の削除やリソースを追加および削除するための機能提供しますが、API を介してのみです。 |
INotifyCollectionChanged | 項目ソースに対する外部変更を介して予定やリソースの追加および削除する機能を提供します。 |
IList + INotifyCollectionChanged | 予定やリソースの追加および削除は API および項目ソースに対する外部変更を介してサポートされます。このクラスは両方のインターフェイスを実装するため、最良の結果を得るには、 ObservableCollection<T> クラスが推奨されます |
INotifyPropertyChanged | 基になるデータ オブジェクト クラス (POCO) で実装した場合、オブジェクトのプロパティに加えられた外部変更は対応する予定およびリソース オブジェクトで直ちに同期されます。予定やリソースのプロパティを介した変更は常に基になるデータ オブジェクトへ伝達が返されるため、INotifyPropertyChanged 実装はこのシナリオでは必要ありません。 |