SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

Silverlight/WPFでデータバインディングを利用しOutlookライクなスケジュールを構築する その2
WPF編

Silverlight/WPFでOutlookライクなアプリ構築(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

画面に表示させるデータをコードで生成する

 画面に表示させるデータを作成するため、xamSchedule_WPF プロジェクトに新しいフォルダーを “ViewModels” と名付け作成し、そのフォルダー内に新しいクラスを “MainWindowViewModel.cs” と名付け、作成します。

図 5 - ViewModel クラスを追加
図 5 - ViewModel クラスを追加

 このクラスの実装は前回の MainPageViewModel.cs クラスとまったく同じものを流用可能です。

コード 4 - MainWindowViewModel.cs プロパティ部分
using ScheduleDataViewModel;
using System.Collections.ObjectModel;
using System;

namespace xamSchedule_WPF.ViewModels
{
    public class MainWindowViewModel : ViewModelBase
    {
        #region プロパティ

        private ObservableCollection<ResourceInfo> _resources;
        public ObservableCollection<ResourceInfo> Resources
        {
            get { return _resources; }
            set
            {
                _resources = value;
                OnPropertyChanged("Resources");
            }
        }

        private ObservableCollection<ResourceCalendarInfo> _resourceCalendars;
        public ObservableCollection<ResourceCalendarInfo> ResourceCalendars
        {
            get { return _resourceCalendars; }
            set
            {
                _resourceCalendars = value;
                OnPropertyChanged("ResourceCalendars");
            }
        }

        private ObservableCollection<AppointmentInfo> _appointments;
        public ObservableCollection<AppointmentInfo> Appointments
        {
            get { return _appointments; }
            set
            {
                _appointments = value;
                OnPropertyChanged("Appointments");
            }
        }

        private string _currentUserId;
        public string CurrentUserId
        {
            get { return _currentUserId; }
            set
            {
                _currentUserId = value;
                OnPropertyChanged("CurrentUserId");
            }
        }

        #endregion
            // 省略
    }
}

 次にコンストラクタを実装します。今回の記事ではコードでデータを作成します。ここでの注意点としては、予定の開始時刻、終了時刻は世界標準時であるということです。

コード 5 - MainWindowViewModel.csコンストラクタでデータを作成
using ScheduleDataViewModel;
using System.Collections.ObjectModel;
using System;

namespace xamSchedule_WPF.ViewModels
{
    public class MainWindowViewModel : ViewModelBase
    {
        #region プロパティ
            // 省略
        #endregion

        #region コンストラクタ
        public MainWindowViewModel()
        {
            // リソースを作成
            Resources = new ObservableCollection<ResourceInfo>();
            Resources.Add(new ResourceInfo()
            {
                Id = "R0001",
                PrimaryResourceCalendarId = "C0001"
            });

            // リソースカレンダーを作成
            ResourceCalendars = new ObservableCollection<ResourceCalendarInfo>();
            ResourceCalendars.Add(new ResourceCalendarInfo()
            {
                Id = "C0001",
                OwningResourceId = "R0001"
            });

            // 予定を追加
            Appointments = new ObservableCollection<AppointmentInfo>();
            Appointments.Add(new AppointmentInfo()
            {
                Id = "A0001",
                OwningCalendarId = "C0001",
                OwningResourceId = "R0001",
                Start = DateTime.Now.ToUniversalTime(),
                End = DateTime.Now.AddHours(2).ToUniversalTime(),
            });

            // 現在のユーザー ID を指定
            this.CurrentUserId = this.Resources[0].Id;
        }
        #endregion
    }
}

 この MainWindowViewModel を実行時に MainWindow の DataContext に格納します。そのため、MainWindow.xaml.cs を開き、コンストラクタで MainWindowViewModel のインスタンスを作成します。

コード 6 - MainWindow.xaml.cs
using System.Windows;
using xamSchedule_WPF.ViewModels;

namespace xamSchedule_WPF
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            MainWindowViewModel vm = new MainWindowViewModel();
            this.DataContext = vm;
        }
    }
}

 これでスケジュールに表示させるためのデータの作成が完了しました。

次のページ
データのマッピングを行い、予定を画面に表示させる

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

インフラジスティックス・ジャパン株式会社 池原 大然(イケハラ ダイゼン)

国内ベンチャー企業にて.NETエンジニアとして開発に従事、2007年インフラジスティックス・ジャパンに入社。現在デベロッパー エバンジェリストとして、.NETやWPF/Silverlight製品や技術の啓蒙活動を行う。Microsoft MVP for Client App Dev 2010/04 ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5670 2011/02/22 10:43

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング