Разработать WPF-приложение, представляющее собой одно окно.
1 В окне должны располагаться следующие элементы
1.1 Список, заполненный элементами: «линейная», «квадратичная», «кубическая», «4-ой степени», «5-ой степени».
1.2 Текстовые поля для задания коэффициентов a и b.
1.3 Выпадающий список для задания коэффициента c. Содержимое значений зависит от выбранной функции ([1, 2, 3, 4, 5] для линейной, [10, 20, 30, 40, 50] для квадратичной и т.д.).
1.4 Таблица с тремя колонками: f(x, y), x, y.
1.5 Пользователь может добавлять строки в таблицу 1.4.
2 Использование приложения
2.1 Пользователь выбирает функцию из списка 1.1
2.2 Задаёт коэффициенты a, b, c.
2.3 Вводит значения x и y в таблицу 1.4
2.4 Приложение автоматически рассчитывает значения f(x, y) по соответствующим формулам:
линейная | f(x, y) = ax + by^0 + c |
---|---|
квадратичная | f(x, y) = ax^2 + by^1 + c |
… | |
5-ой степени | f(x, y) = ax^5 + by^4 + c |
2.5 Каждой функции в списке 1.1 соответствует свой набор коэффициентов и табличных значений. Если пользователь меняет, например, значение коэффициента а для линейной функции, затем выбирает в списке квадратичную функцию, поле с коэффициентом а заполняется значением для квадратичной функции. Соответственно, если пользователь вновь выбирает линейную функцию, в поле восстанавливается значение коэффициента, которое было введено ранее.
3 Требования
3.1 Реализовать работу приложения, используя шаблон MVVM, задействовать механизм привязок (binding).
3.2 При изменении размеров окна, его содержимое должно соответствующим образом сжиматься/разжиматься.
3.3 Приложение не должно позволять вводить некорректные данные:
• нечисловые значения в поля, где должны быть только числа;
• значения в столбце f(x, y) (они всегда рассчитываются автоматически);
• изменять названия функций из списка 1.1.
3.4 В Code-behind только конструкторы, никаких обработчиков событий.
3.5 Функционал расчёта формул покрыт Unit-тестами.
3.6 Классы, публичные поля, методы, свойства имеют <summary>-комментарии.
3.7 Программный код должен быть оформлен по одному из общепринятых соглашений по оформлению кода. Например, https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/inside-a-program/coding-conventions.
3.8 Код выложен на https://github.com/