Создай программу на C# по данному ТЗ, но не пиши её, а раздели на три части. После этого, когда я назову часть программы, ты выведешь еёЖ
1. Информационная система (рис. 1) должна позволять вводить следующие данные о дисциплинах: Наименование;
Статус (сдал / не сдал).
2. Осуществлять фильтрацию дисциплин по статусу (рис. 2).
3. Использовать не стандартную визуализацию списка дисциплин. Заменить логическое свойство Статус
определенным цветом (изменить шаблон отображения элемента ItemTemplate в ListBox).
4. Дисциплины хранятся в файле и считываются асинхронно при старте приложения. (рис. 3).
5. Приложение должно позволять добавлять, удалять дисциплины. Менять Статус на противоположный у
выбранной в списке дисциплины.
6. Сохранять текущий отображаемый список дисциплин.
7. Приложение необходимо реализовать посредствами технологии WPF.
Рис 1. Рис 2. Рис 3.
Рекомендации к коду:
1. Всю программную логику (коллекции, методы) реализовать в отдельном классе Logic. Для того, чтобы
в дальнейшем ваше окно могло забирать данные с объекта этого класса, нужно в codebehind вашего
окна MainWindow в конструкторе после инициализации компонентов определить контекст (источник
данных) - DataContext = new Logic();
2. Если вы выполнили п.1, то ваши визуальные элементы управления смогут обращаться к объекту класса
посредством технологии привязки данных. Следующий пример демонстрирует как элемент
отображения списков получает данные по предметам:
<ListView ItemsSource=“{Binding Subjects}” SelectedItem=“{Binding SelectedSubject}”/>
Как видно, данные поступают ему из коллекции Subjects, которая объявлена в классе Logic как
ObservableCollection<Subject> Subjects. Данный тип коллекции выбран с целью ее автоматической
перерисовки в случае изменения (добавления / удаления элементов)
3. В тех случаях, если в логике вашей программы предусмотрено изменение свойств класса, класс должен
имплементировать интерфейс INotifyPropertyChanged и в тех свойствах, об изменении которых
необходимо сообщать интерфейсу, вызвать соответствующий метод. Пример:
class Subject : INotifyPropertyChanged
{
public string Title { set { _title = value; NotifyPropertyChanged();}
}
4. Для преобразования логического значения в соответствующий цвет заливки многоугольника используйте
интерфейс IValueConverter при реализации класса-конвертера. Пример:
class BoolToColorConverter : IValueConverter
Применить конвертер необходимо в разметке, в измененном шаблоне (ItemTemplate) у ListView:
<Rectangle Fill =“{Binding Status, Converter={StaticResource BoolToColorConverter}}”/