private bool ProcessChanged(EDOUnitVM edoUnit, object newValue, object oldValue) { MenuItemVM newMenuItem = newValue as MenuItemVM; MenuItemVM oldMenuItem = oldValue as MenuItemVM; if (newMenuItem == null) { return(false); } //同じアイテムが選択された場合は以降の処理は行わない(エラーが発生して戻す場合に無限ループになるのを防ぐ) if (newMenuItem == edoUnit.SelectedMenuItem) { return(false); } if (oldMenuItem != null) { if (!oldMenuItem.validate()) { this.Dispatcher.BeginInvoke(new Action(() => { oldMenuItem.IsSelected = true; })); return(false); } } edoUnit.SelectedMenuItem = newMenuItem; edoUnit.SetStatusMessage(newMenuItem.Title, false); return(true); }
private bool ProcessChanged(EDOUnitVM edoUnit, object newValue, object oldValue) { MenuItemVM newMenuItem = newValue as MenuItemVM; MenuItemVM oldMenuItem = oldValue as MenuItemVM; if (newMenuItem == null) { return false; } //同じアイテムが選択された場合は以降の処理は行わない(エラーが発生して戻す場合に無限ループになるのを防ぐ) if (newMenuItem == edoUnit.SelectedMenuItem) { return false; } if (oldMenuItem != null) { if (!oldMenuItem.validate()) { this.Dispatcher.BeginInvoke(new Action(() => { oldMenuItem.IsSelected = true; })); return false; } } edoUnit.SelectedMenuItem = newMenuItem; edoUnit.SetStatusMessage(newMenuItem.Title, false); return true; }
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { EDOUnitVM edoUnit = DataContext as EDOUnitVM; if (!ProcessChanged(edoUnit, e.NewValue, e.OldValue)) { return; } if (edoUnit is StudyUnitVM) { StudyUnitVM studyUnitVM = (StudyUnitVM)edoUnit; MenuItemVM menuItem = studyUnitVM.SelectedMenuItem; studyUnitVM.Main.IsDataSet = menuItem.IsDataSet; if (menuItem.IsDataSet) { studyUnitVM.Main.IsDataSetSelected = true; } studyUnitVM.Main.IsCategory = menuItem.IsCategory; if (menuItem.IsCategory) { studyUnitVM.Main.IsCategorySelected = true; } studyUnitVM.Main.IsCode = menuItem.IsCode; if (menuItem.IsCode) { studyUnitVM.Main.IsCodeSelected = true; } studyUnitVM.Main.IsQuestionGroup = menuItem.IsQuestionGroup; if (menuItem.IsQuestionGroup) { studyUnitVM.Main.IsQuestionGroupSelected = true; } } else if (edoUnit is GroupVM) { } }
public WriteError(string message, EDOUnitVM edoUnit, FormVM form) { Message = message; EDOUnit = edoUnit; Form = form; }
// メイン画面の書く入力フォームに対応したViewModel。 // 親としてEDOUnitVMを継承した、StudyUnitVMか、GroupVMを想定。 public FormVM(EDOUnitVM edoUnit) : base(edoUnit) { state = null; }
public void ShowMenuItem(EDOUnitVM edoUnit, MenuItemVM menuItem) { SelectedItem = edoUnit; Window window = Application.Current.MainWindow; //こうしないと現在表示中のStudyUnit以外でエラーが発生したときに指定メニューが表示されない。 window.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { edoUnit.SelectMenuItem(menuItem); })); }