カレンダーのユーザーコントロールを作成しています。そのようなプロパティとして開始日と終了日があります
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
このようにUsercontrolを呼び出すことができます
<Local:CalendarControl StartDate="7/1/2013" EndDate="8/11/2013">
</Local:CalendarControl>
ユーザーコントロール内で、開始日と終了日の間の週番号と日付を計算する必要があります。このために、私は当然、選択した開始日と終了日を使用する必要があります。ただし、バインディングが計算されるまでに、プロパティはまだ設定されていません。
したがって、バインドされているプロパティは次のようになります。
public List<DateTime> Dates
{
get
{
var dateTimes = new List<DateTime>();
for (var currentDate = StartDate; currentDate <= EndDate; currentDate = currentDate.AddDays(1))
dateTimes.Add(currentDate);
return dateTimes;
}
}
public List<int> Weeks
{
get
{
var weeks = new List<int>();
if (DateTimeFormatInfo.CurrentInfo != null)
{
var cal = DateTimeFormatInfo.CurrentInfo.Calendar;
foreach (var dateTime in Dates)
{
var weekNum = cal.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
if (weeks.All(f => f != weekNum))
{
weeks.Add(weekNum);
}
}
}
return weeks;
}
}
また、XAMLでは、バインドされているDATESプロパティとWEEKSプロパティがあります。ただし、最初に設定されるStartDateとEndDateに依存します。
プロパティがバインドされているときにプロパティが設定されていることを確認するにはどうすればよいですか。それとも、これを行うためのより良い方法はありますか?