Beispiel #1
0
        public MainWindowViewModel(Window view) : base(view)
        {
            Initialize();

            model = new Model.MainWindowModel(this);
            LoadList();
        }
        public MainWindowViewModel()
        {
            mainWindowModel = new Model.MainWindowModel();

            CurControl    = new CurrentViewModel();
            WeeklyControl = new WeeklyViewModel();
            MapControl    = new MapViewModel();
        }
        /// <summary>modelの生成等の初期化処理を実施</summary>
        private void Initialize()
        {
            Logger.Info(CLASS_NAME, "Initialize", "start");

            // 必ず最初にMainWindowModelをnewすること
            // これにより、下流でSettingManagerのインスタンスが生成され、全設定情報が読み込まれるため
            _model = new Model.MainWindowModel(this);

            //todo:並列処理可能では?
            // コマンド初期化処理
            InitializeCommand();

            // 類語検索領域初期化処理
            InitializeSynonymSearch();

            // 設定更新時のイベント登録
            InitializeUpdateSettingEvents();

            // 設定値を画面に適用する
            //todo:Model側をメインに
            ApplySettings();
            // IsModifiedは通知タイミングがTextChangedより遅れるので、DependencyPropertyに登録しないと一歩遅れた処理になってしまう
            // 具体的には、最初の1回目のキーダウン(文字入力)を取得できない
            // DependencyPropertyDescriptorは強参照のため、参照を解除できず、繰り返し行うとメモリリークにつながる
            // 現状、Initializeは起動時にしか呼ばれず、動的にメインの文章表示領域が削除・再表示されることは現状ないので、一旦この実装で機能を満たす
            //var descripter = DependencyPropertyDescriptor.FromProperty(TextEditor.IsModifiedProperty, typeof(TextEditor));
            //if (descripter != null)
            //{
            //    if (_model != null && _model.TextDocument != null)
            //    {
            //        descripter.RemoveValueChanged(_model.TextDocument, OnIsModifiedChanged);
            //        descripter.AddValueChanged(_model.TextDocument, OnIsModifiedChanged);
            //    }
            //    else
            //    {
            //        Logger.Fatal(CLASS_NAME, "Initialize", "_model or TextEditor is null!");
            //    }
            //}
        }