Обработка большого количества combobox'ов

363
06 ноября 2017, 19:40

Всем доброго времени суток. Делал я тут на досуге лабу и столкнулся со следующими трудностями: У меня есть программа-калькулятор COCOMO в котором реализовал следующий интерфейс: В каждом комбобоксе есть свой набор items'ов, выбор которых влияет на конечный результат. Например: если я в комбобоксе выбираю "Low" то программа должна понимать, что за этим low скрывается коэффициент 0,71.
По нажатию на кнопку будут по определенным формулам вычилсяться два поля, используя коэффициенты из каждого комбобокса.
Вопрос: как реализовать задумку не отходя от mvvm концепции?
В голову приходят только property отдельно для каждого из комбобоксов. Но должен же быть способ изящнее, разве нет?
P.s. В проекте использую фреймворк catel

Answer 1

Я бы завёл для вашего показателя отдельную структуру данных. Например, такую:

class Grade
{
    public double Value { get; }
    public string Name { get; }
    // ещё поля по вкусу
    internal Grade(double value, string name) { Value = value; Name = name; }
}

Затем, можно завести список (или списки) возможных показателей.

static class GradeGroups
{
    private static Grade High = new Grade(0.73, "High");
    private static Grade Medium = new Grade(0.72, "Medium");
    private static Grade Low = new Grade(0.71, "Low");
    public static IEnumerable<Grade> All = new[] { High, Medium, Low };
    // определите тут другие группы, если надо
}

Теперь, можно пользоваться этим так:

<ComboBox ItemsSource="{x:Static local:GradeGroups.All}"
          SelectedItem="{Binding AnalyticalSkills}"
          DisplayMemberPath="Name"/>

Разумеется, вам придётся в VM положить свойство AnalyticalSkills типа Grade.

READ ALSO
Как обновить Модель Entity при изменении структуры БД

Как обновить Модель Entity при изменении структуры БД

Исходные данные : БД - MSSQL, Проект на C#, Подход Entity - Model First

272
Как правильно создать open-source проект?

Как правильно создать open-source проект?

В своё время мне не удалось найти устраивающий меня SQL-парсер, и я начал писать свой, потом бросилСейчас думаю вернуться к этому делу, желательно...

271
Поиск файла по правам доступа

Поиск файла по правам доступа

Написать консольное приложение, реализующее работу с файламиПриложение должно обладать следующей функциональностью:

240