ソリューションを作成し、データ クラスを定義
今回は、.NET Framework 4 並びに Silverlight 4 のアセンブリ共有の仕組みを利用し、データ モデルを一元化するサンプルを作成します。また、各データについてはデータ バインディングの仕組みを用いてコントロールにスケジュール情報を表示させます。まず、Visual Studio 2010 を起動し、空のソリューション "xamSchedule" を作成します。
作成したソリューションに Silverlight クラス ライブラリを "ScheduleDataViewModel" と名付け、追加します。その際、ターゲットとするバージョンは Silverlight 4 を指定します。
あらかじめ作成されている Class1.cs ファイルを削除し、新たに ViewModelBase クラスを作成します。
このクラスでは INotifyPropertyChanged インターフェースの実装を行い、さらに、OnPropertyChanged メソッドの実装を行います。このインターフェースを実装することで、今後ロジック側において、プロパティの値が変更された場合にビュー(UI)側に変更通知が行われます。
using System.ComponentModel;
namespace ScheduleDataViewModel
{
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if ( PropertyChanged != null )
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
続けて、Resource , ResourceCalendar, Appointment エンティティを実装した、ResourceInfo,ResourceCalendarInfo, AppointmentInfo クラスを実装します。ResourcInfo クラスには PrimaryResourceCalendarId という現在のリソースの主カレンダーを保持するエンティティを追加します。
namespace ScheduleDataViewModel
{
public class ResourceInfo : ViewModelBase
{
#region プロパティ
private string _id;
public string Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("Id");
}
}
private string _primaryResourceCalendarId;
public string PrimaryResourceCalendarId
{
get { return _primaryResourceCalendarId; }
set
{
_primaryResourceCalendarId = value;
OnPropertyChanged("PrimaryResourceCalendarId");
}
}
#endregion
}
}
namespace ScheduleDataViewModel
{
public class ResourceCalendarInfo : ViewModelBase
{
#region プロパティ
private string _id;
public string Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("Id");
}
}
private string _owningResourceId;
public string OwningResourceId
{
get { return _owningResourceId; }
set
{
_owningResourceId = value;
OnPropertyChanged("OwningResourceId");
}
}
#endregion
}
}
using System;
namespace ScheduleDataViewModel
{
public class AppointmentInfo : ViewModelBase
{
#region プロパティ
private string _id;
public string Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("Id");
}
}
private DateTime _start;
public DateTime Start
{
get { return _start; }
set
{
_start = value;
OnPropertyChanged("Start");
}
}
private DateTime _end;
public DateTime End
{
get { return _end; }
set
{
_end = value;
OnPropertyChanged("End");
}
}
private string _owningResourceId;
public string OwningResourceId
{
get { return _owningResourceId; }
set
{
_owningResourceId = value;
OnPropertyChanged("OwningResourceId");
}
}
private string _owningCalendarId;
public string OwningCalendarId
{
get { return _owningCalendarId; }
set
{
_owningCalendarId = value;
OnPropertyChanged("OwningCalendarId");
}
}
private TimeSpan _reminderInterval;
public TimeSpan ReminderInterval
{
get { return _reminderInterval; }
set
{
_reminderInterval = value;
OnPropertyChanged("ReminderInterval");
}
}
private bool _reminderEnabled;
public bool ReminderEnabled
{
get { return _reminderEnabled; }
set
{
_reminderEnabled = value;
OnPropertyChanged("ReminderEnabled");
}
}
private string _recurrence;
public string Recurrence
{
get { return _recurrence; }
set
{
_recurrence = value;
OnPropertyChanged("Recurrence");
}
}
private int _recurrenceVersion;
public int RecurrenceVersion
{
get { return _recurrenceVersion; }
set { _recurrenceVersion = value; }
}
private string _rootActivityId;
public string RootActivityId
{
get { return _rootActivityId; }
set
{
_rootActivityId = value;
OnPropertyChanged("RootActivityId");
}
}
private DateTime _originalOccurrenceStart;
public DateTime OriginalOccurrenceStart
{
get { return _originalOccurrenceStart; }
set
{
_originalOccurrenceStart = value;
OnPropertyChanged("OriginalOccurrenceStart");
}
}
private DateTime _originalOccurrenceEnd;
public DateTime OriginalOccurrenceEnd
{
get { return _originalOccurrenceEnd; }
set
{
_originalOccurrenceEnd = value;
OnPropertyChanged("OriginalOccurrenceEnd");
}
}
private bool _isOccurrenceDeleted;
public bool IsOccurrenceDeleted
{
get { return _isOccurrenceDeleted; }
set
{
_isOccurrenceDeleted = value;
OnPropertyChanged("IsOccurrenceDeleted");
}
}
private long _variantProperties;
public long VariantProperties
{
get { return _variantProperties; }
set
{
_variantProperties = value;
OnPropertyChanged("VariantProperties");
}
}
private bool _isTimeZoneNeutral;
public bool IsTimeZoneNeutral
{
get { return _isTimeZoneNeutral; }
set
{
_isTimeZoneNeutral = value;
OnPropertyChanged("IsTimeZoneNeutral");
}
}
#endregion
}
}




