private void Model_New_Name_KeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.Return) { string name = (sender as TextBox).Text; Model_New_Popup.IsOpen = false; DecisionModel dm = new DecisionModel(name); dm.CreateCriterion("C1", "Color", new ChoiceScorer( 10, new[] { new ChoiceScorer.Selection("Red", 10), new ChoiceScorer.Selection("Green", 5), new ChoiceScorer.Selection("Other", 3) })); dm.CreateCriterion("C2", "MPG", new RangeScorer(10.0, 40.0)); dm.CreateCriterion("C3", "Warranty Period Years", new RangeScorer(1.0, 5.0)); dm.CreateCriterion("C4", "Price", new RangeScorer(30000.0, 150000.0)); dm.CreateCriterion("C5", "Backup Camera", new BooleanScorer()); dm.CreateCriterion("C6", "Craftsmanship", new DiscreteRangeScorer(1, 10)); dm.CreateCriterion("C7", "Distance to Dealer", new RangeScorer(4.0, 50.0, higherIsBetter: false)); dm.CreateCriterion("C8", "Horsepower", new RangeScorer(200.0, 900.0)); dm.CreateCriterion("C9", "Manufacturer", new ChoiceScorer( 10, new[] { new ChoiceScorer.Selection("Porsche", 10), new ChoiceScorer.Selection("Audi", 8), new ChoiceScorer.Selection("BMW", 6), new ChoiceScorer.Selection("Lexus", 4), new ChoiceScorer.Selection("Nissan", 3), new ChoiceScorer.Selection("Ford", 2), new ChoiceScorer.Selection("Other", 0), })); dm.CreateCriterionOrdering("C8", CriterionOrdering.OrderingRelation.IsEqualTo, "C7"); dm.CreateCriterionOrdering("C7", CriterionOrdering.OrderingRelation.IsSignificantlyBetterThan, "C6"); dm.CreateCriterionOrdering("C6", CriterionOrdering.OrderingRelation.IsModeratelyBetterThan, "C9"); dm.CreateCriterionOrdering("C9", CriterionOrdering.OrderingRelation.IsSlightlyBetterThan, "C5"); dm.CreateCriterionOrdering("C5", CriterionOrdering.OrderingRelation.IsSlightlyBetterThan, "C4"); dm.CreateCriterionOrdering("C4", CriterionOrdering.OrderingRelation.IsSlightlyBetterThan, "C3"); dm.CreateCriterionOrdering("C3", CriterionOrdering.OrderingRelation.IsEqualTo, "C2"); dm.CreateCriterionOrdering("C2", CriterionOrdering.OrderingRelation.IsEqualTo, "C1"); dm.NormalizeCriteria(); DecisionModelVM.DecisionModel = dm; e.Handled = true; } }
public void EditableCriterion_PropertyChanged(object sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case "Criterion": { EditableCriterion ec = sender as EditableCriterion; int index = orderedCriteria.IndexOf(ec); if (index == -1 || !ec.IsNewEditableCriterion) { return; } // Finished editing a new Criterion - need to add it to the DecisionModel DecisionModel dm = DecisionModel; dm.CreateCriterion( ec.Name, ec.Description, ec.Scorer); if (orderedCriteria.Count != 1) { Criterion lastCriterion = dm.OrderedCriteria.Last.Value; Criterion newCriterion = dm.Criteria[ec.Name]; dm.CreateCriterionOrdering( lastCriterion.Name, CriterionOrdering.OrderingRelation.IsEqualTo, newCriterion.Name); } dm.NormalizeCriteria(); break; } case "Scorer": { EditableCriterion ec = sender as EditableCriterion; Scorer = ec.Scorer; break; } } }