表示期間の指定は XamScheduleView の VisibleDates プロパティに対して表示させたい日付の追加でできます。例えば表示期間を今月としたい場合は、次のようなコードになります。

var today = DateTime.Today; // 今日の日付
var firstDayOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);  // 今月の1日の日付
int daysThisMonth = DateTime.DaysInMonth(DateTime.Today.Year, DateTime.Today.Month);    // 今月の日数

// VisibleDates の Clear メソッドを実行後、AddRange で表示期間を設定します。
this.xamScheduleView1.VisibleDates.Clear();
this.xamScheduleView1.VisibleDates.AddRange(firstDayOfMonth, firstDayOfMonth.AddDays(daysThisMonth - 1), true);

 

特定日付にスクロールする場合は、XamScheduleView には該当するメソッドがないので、ScrollBar の仕様に従って自分で ScrollBar の Value 値を計算して設定する必要があります(※算数や数学の考え方が必要になってきます)。例えば XamScheduleView オブジェクトとスクロール先の DateTime を受け取り、XamScheduleView をスクロールさせるメソッドは以下のようになります。

private void ScrollToTime(XamScheduleView scheduleView, DateTime dtScrollTo)
{
    // スクロールバーを取得する。取得できなかったら何もしない。
    // https://jp.infragistics.com/help/wpf/infragisticswpf~infragistics.windows.utilities~getdescendantfromname
    var scrollBar = Infragistics.Windows.Utilities.GetDescendantFromName(scheduleView, "TimeslotScrollBar") as ScrollBar;
    if (scrollBar == null) return;

    // Primaryの時刻表示のヘッダーを取得する。取得できなかったら何もしない。
    var headerArea = Infragistics.Windows.Utilities.GetDescendantFromName(scheduleView, "PrimaryTimeZone") as ScheduleViewTimeslotHeaderArea;
    if(headerArea == null) return;

    // Primaryの時刻表示の最初のIntervalを取得する。取得できなかったら何もしない。
    var header = Infragistics.Windows.Utilities.GetDescendantFromType(scheduleView, typeof(ScheduleViewTimeslotHeader), false) as ScheduleViewTimeslotHeader;
    if(header == null) return;

    // 表示領域のIntervalの数を計算
    double intervalsInView = (double)headerArea.ActualWidth / (double)header.ActualWidth;

    // Primaryの時刻表示のIntervalを時間の単位で取得
    double interval = scheduleView.TimeslotInterval.TotalHours;

    // スクロール先の時間を設定(単位: 時間)
    TimeSpan scrollToTimeSpan = dtScrollTo - scheduleView.VisibleDates.Min();
    double scrollTo = scrollToTimeSpan.TotalHours;

    // スクロールバーの位置(newOffset)を計算
    // 分母(denominator): スクロール領域の全Interval数 - View領域のIntervalの数。
    // 分子(numerator): スクロール先の時間までのInterval数
    // ※Intervalの数は設定によって異なりますので、実際の実装内容に沿った修正が必要になる場合があります。
    double denominator = (scheduleView.VisibleDates.Count * 24.0 / interval) - intervalsInView;    // 1日当たり24時間表示されている(※既定)と仮定。
    double numerator = scrollTo / interval; // 0時から表示されている(※既定)と仮定
    double newOffset = numerator / denominator;
    if (newOffset > 1.0) newOffset = 1.0;

    // スクロールバーの位置を設定
    // ※この計算式自体は、ScrollBar開発元のマイクロソフトのサイトなどでご確認ください。
    scrollBar.Value = newOffset * (scrollBar.Maximum - scrollBar.Minimum);
}

 

実装例

 

API リファレンス

 

サンプル

 

Tagged:

製品について

Ultimate UI for WPF