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!"); // } //} }