private void HypothesisView_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args) { if (_model != null) { _model.PropertyChanged -= _model_PropertyChanged; } if (args.NewValue is MenuItemViewModel) { _model = ((MenuItemViewModel)args.NewValue).MenuItemComponentViewModel as StatisticalComparisonMenuItemViewModel; _model.PropertyChanged += _model_PropertyChanged; if (_model.StatisticalComparisonOperationModel != null) { if (_statModel != null) { _statModel.PropertyChanged -= _statModel_PropertyChanged; } _statModel = _model.StatisticalComparisonOperationModel; _statModel.PropertyChanged += _statModel_PropertyChanged; } updateRendering(); } }
private static void createRightHistogramMenu(HistogramOperationViewModel histogramOperationViewModel) { var attachmentViewModel = histogramOperationViewModel.AttachementViewModels.First(avm => avm.AttachmentOrientation == AttachmentOrientation.Right); var menuViewModel = new MenuViewModel { AttachmentOrientation = attachmentViewModel.AttachmentOrientation, NrColumns = 2, NrRows = 2 }; histogramOperationViewModel.HistogramOperationModel.PropertyChanged += (sender, args) => { var model = histogramOperationViewModel.HistogramOperationModel; if (args.PropertyName == model.GetPropertyName(() => model.StatisticalComparisonOperationModel)) { if (model.StatisticalComparisonOperationModel == null) { foreach (var mvm in menuViewModel.MenuItemViewModels.ToArray()) { menuViewModel.MenuItemViewModels.Remove(mvm); } } else { var menuItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Row = 0, ColumnSpan = 1, RowSpan = 2, Column = 0, Size = new Vec(54, 54), Position = histogramOperationViewModel.Position, TargetSize = new Vec(54, 54), IsAlwaysDisplayed = true }; var attr1 = new StatisticalComparisonMenuItemViewModel { StatisticalComparisonOperationModel = model.StatisticalComparisonOperationModel }; menuItem.MenuItemComponentViewModel = attr1; menuViewModel.MenuItemViewModels.Add(menuItem); var toggles = new List <ToggleMenuItemComponentViewModel>(); var items = new List <MenuItemViewModel>(); TestType[] types = new TestType[] { TestType.chi2, TestType.ttest }; int count = 0; foreach (var type in types) { var toggleMenuItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Row = count, RowSpan = 0, Position = histogramOperationViewModel.Position, Column = 1, Size = new Vec(54, 25), TargetSize = new Vec(54, 25), IsAlwaysDisplayed = true }; //toggleMenuItem.Position = attachmentItemViewModel.Position; var toggle = new ToggleMenuItemComponentViewModel { Label = type.ToString(), IsChecked = model.StatisticalComparisonOperationModel.TestType == type }; toggles.Add(toggle); toggleMenuItem.MenuItemComponentViewModel = toggle; toggleMenuItem.MenuItemComponentViewModel.PropertyChanged += (sender2, args2) => { var toogleModel = sender2 as ToggleMenuItemComponentViewModel; if (args2.PropertyName == model.GetPropertyName(() => toogleModel.IsChecked)) { if (toogleModel.IsChecked) { model.StatisticalComparisonOperationModel.TestType = type; model.StatisticalComparisonOperationModel.FireOperationModelUpdated(new OperationModelUpdatedEventArgs()); foreach (var tg in toogleModel.OtherToggles) { tg.IsChecked = false; } } } }; menuViewModel.MenuItemViewModels.Add(toggleMenuItem); items.Add(toggleMenuItem); count++; } foreach (var mi in items) { (mi.MenuItemComponentViewModel as ToggleMenuItemComponentViewModel).OtherToggles.AddRange(toggles.Where(ti => ti != mi.MenuItemComponentViewModel)); } } } }; attachmentViewModel.MenuViewModel = menuViewModel; }