Пример #1
0
        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;
            }
        }
Пример #2
0
        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;
            }
            }
        }