9 grudnia 2017 -------------- * Programowanie zdarzeniowe 1. Korzystając ze zdarzeń odtwórz aplikacje przygotowane wcześniej na zajęciach Windows Forms tj. 'Kolory', 'Równania kwadratowe' i 'Przyciski' 2. Przygotuj projekt aplikacji 'NotatnikWPF', który będzie miał funkcjonalności notatnika z systemu Windows * MVVM 1. W projekcie 'Równania kwadratowe' ze zdarzeniami wyodrębnij klasę RównanieKwadratowe, która odpowiedzialna będzie za znajdywanie rozwiązania równań kwadratowych, czyli model aplikacji. Klasa ta powinna mieć metodę Rozwiąż, która przyjmuje współczynniki a, b i c, a zwraca wyniki x1 i x2. 2. Wykorzystaj tę klasę i przekształć projekt w projekt MVVM. Model widoku powinien zawierać własności A, B i C będące współczynnikami równania. Należy z nimi związać trzy kontrolki TextBox w kodzie XAML. Model widoku powinien również zawierać dwie własności tylko do odczytu X1 i X2 udostępniające rozwiązania. Należy z nimi związać dwie kontrolki TextBlock w kodzie XAML. W widoku należy również umieścić przycisk z etykietą 'Rozwiąż', który związany będzie z poleceniem, które wywołuje metodę RównanieKwadratowe.Rozwiąż. 3. Do projektu TekstWPF_3 dodać konwerter, który zmienia wyznacza kolor z kolekcji Brushes w zależności od długości tekstu. Zastosować ten konwerter do ustalenia kolor kontrolki TextBlock (własność Foreground). 13 stycznia 2018 ---------------- Uwaga! Link do materiałów (testy jednostkowe i pojemniki) wysłałem na konta uniwersyteckie. 1. Odtworzyć w WPF interfejs aplikacji Kolory (prostokąt Rectangle + trzy suwaki Slider) Wpierw użyj pojemnika StackPanek, potem Grid, Canvas i wreszcie DockPanek. 2. Przygotuj model (klasa Kolor) dla aplikacji KoloryWPF, w którym przechowywane są trzy wielkości typu byte o nazwach R, G i B (składowe koloru). 3. Zdefiniuj model widoku, który udostępnia własności R, G i B ze składowymi oraz własność Pędzel typu Brush. Własności R, G i B zwiąż z suwakami (wiązanie dwustronne), a Pędzel z własnością Background kontrolki Rectangle. W modelu widoku pamiętaj o implementacji INotifyPropertyChanged. 4. W modelu widoku zdefiniuj polecenie, które będzie zerować wartości składowych koloru. Do widoku dodaj przycisk, który będzie wywoływał to polecenie. 5. Napisz testy jednostkowe dla klasy Ulamek z pliku Ulamek.cs, która implementuje ułamki zwykłe (para liczb licznik i mianownik) http://www.fizyka.umk.pl/~jacek/dydaktyka/spdypl_net/wpf-mvvm/zrodla/Ulamek.cs W klasie jest ukryty błąd, który należy znaleźć dzięki testom. 20 stycznia 2018 ---------------- 1. Przygotować zachowanie dla klasy TextBox, które po naciśnięciu klawisza będzie emitować dźwięk maszyny do pisania (plik typewriter.wav, klasa SoundPlayer). 2. Przygotować zachowanie dla paska postępu (ProgressBar), które będzie zmieniało jego kolor w zależności od wartości własności Value (0-50 zielony, 51-75 żółty, 76-100 czerwony). 3. Zmień zachowanie z zadania 2. tak, żeby kolor zmieniał sie płynnie. --- Konkurs 1: nagroda +1/2 do oceny dla dwóch pierwszych osób, które wyślą rozwiązanie Przygotować zachowanie dla TextBox, które będzie zmieniało rozmiar czcionki (własność FontSize) przy poruszaniu rolką myszą z przyciśniętym klawiszem Ctrl. Laureat: Aleksandra Gruszka, Maciej Krebs 27 stycznia 2018 ---------------- 1. Przygotować zachowanie dla TextBox, które blokuje wpisywanie znaków innych niż cyfry. Projekty na ferie: A. Przygotować projekt aplikacji MVVM, która pozwala na wpisanie 11-znakowego łańcucha składającego się z cyfr - numer PESEL - i odkoduje z niego datę, płeć i numer seryjny. Informacje o PESEL: Wikipedia B. Przygotuj projekt MVVM, który pozwoli na przechowywanie informacji o płytach muzycznych. Możliwe powinny być operacje CRUD: tworzenie, usuwanie i aktualizacja rekordów oraz oczywiście ich przeglądanie. C. Stwórz projekt kontrolki (User Control), która składa się pola tekstowego i przycisku: kliknięcie przycisku powinno pozwolić na wybór pliku, który następnie wyświetlany jest w kontrolce TextBox. Kontrolka powinna mieć zdefiniowaną własność zależności, która decyduje o pliku wskazanym po uruchomieniu i udostępniającą plik wybrany przez użytkownika. 3 lutego 2018 ------------- 1. Przygotować projekt prezentujący praktyczne zastosowanie zdarzeń trasowanych. 2. Do nowego projektu aplikacji WPF dodać przycisk, którego metoda zdarzeniowa związana z kliknięciem będzie wyświetlać na przemian komunikat "Raz" i "Dwa". Wykorzystać pole-flagę do zmiany działania metody. 3. Przygotuj animację zmieniającą własność Value kontrolki ProgressBar w taki sposób, żeby była ona stale zwiększana do wartości maksymalnej i zmniejszana do minimalnej od momentu uruchomienia aplikacji (RepeatBehavior="Forever" AutoReverse="False"). Konkurs 2: nagroda +1/2 do oceny dla dwóch osób, które w najbardziej elegancki sposób umieszczą w zachowaniu mechanizm animacji zanikania okna przy jego zamknięciu. Konkurs 3: nagroda +1/2 do oceny dla dwóch pierwszych osób, które wyślą rozwiązanie W zachowaniu zmieniającym rozmiar czcionki w kontrolce TextBox rozwiązać problem przewijania po włączeniu trybu wieloliniowego (por. zdarzenia trasowane i e.Handled). Pożądane zachowanie: przewijanie, gdy klawisz Ctrl nie jest wciśnięty, zmiana rozmiaru czcionki - tylko z przytrzymanym Ctrl. Laureaci: Piotr Lisewski, Kamil Górski 3 marca 2018 ------------ 1. Korzystając z poznanych na zajęciach kształtach przygotuj grę Pong https://pl.wikipedia.org/wiki/Pong Konkurs 4: Do projektu zegara dodaj funkcję alarmu (czerwona wskazówka + możliwość jej ustawienia + zmiana kolorów cyferblatu zegara na czerwone w przypadku alarmu). Nagroda +1/2 do oceny. Laureat: Kamil Górski