Jacek Matulewski
Programowanie Windows (WPF) - Zadania do części II
- 
Przygotuj aplikację WPF zgodną ze wzorcem MVVM, w której w oknie widoczne są kontrolki 
TextBox i TextBlock. Tekst wpisywany w pierwszej kontrolce powinien pojawić się w drugiej kontrolce dzięki wiązaniu z własnością Tekst zdefiniowaną w modelu widoku. Własność ta powinna udostępniać pole o tej samej nazwie zdefiniowane w modelu. Model widoku powinien implementować interfejs INotifyPropertyChanged (sprawdź, czy jest konieczny).
Do okna dodaj też przycisk z etykietą Czyść, który związany jest z poleceniem Czyść zdefiniowanym w modelu widoku, które usuwa tekst z własności Tekst.
 - 
Proszę przygotować aplikację WPF zgodną ze wzorcem MVVM o nazwie Asystent zakupów, której model zawiera:
- własność tylko do odczytu 
Suma typu decimal,
 - metodę 
DodajKwotę przyjmującą w argumencie kwoty typu decimal,
 - konstruktor określający limit możliwych do wydania środków
 - i która sumuje podane w metodzie 
DodajKwotę i udostępnia sumę za pomocą własności Suma.
 
Okno (widok) umożliwia podanie kwoty dzięki polu edycyjnemu typu TextBox. Kwota jest przesyłana dzięki poleceniu związanemu z przyciskiem Button. Bieżąca suma jest wyświetlana w etykiecie TextView. Wykorzystaj konwentery, aby wyświetlić liczby typu decimal w widoku i polecenie, aby dodać kwotę. W code-behind nie może być ani jednej linii kodu.
Uwaga! Aplikacja została opisana w filmie.
 - 
Do projektu Kolory dodaj trzy kontrolki 
TextBlock umieszczone z prawej strony każdego suwaka, które prezentują wartość poszczególnych składowych RGB koloru wybranego za pomocą suwaków. Wartości te mogą być prezentowane dzięki wiązaniom z własnościami modelu widoku lub dzięki wiązaniu z własnościami Value suwaków. Użyj atrybutu StringFormat, aby zaokrąglić wyświetlane liczby do liczb całkowitych.
 - 
Zmodyfikuj projekt Kolory w taki sposób, żeby kontrolkę 
Rectangle związać bezpośrednio z trzema suwakami, podobnie jak pozostałe kontrolki. Usuń przyciski, a następnie cały model i model widoku. Po ustaleniu odpowiednich wiązań między kontrolkami, aplikacja powinna działać z samym widokiem.
 - 
W projekcie Kolory w elemencie 
Window.InputBindings dodaj element MouseBinding, który z przyciśnięciem środkowego klawisza myszy z przytrzymanym klawiszem Ctrl na klawiaturze zwiąże polecenie Resetuj z modelu widoku.
 - 
Dla chętnych. W projekcie Kolory (z dodanymi zachowaniami) w metodzie 
KlawiszZmieniony zachowania KlawiszWyłączBehavior zmień polecenie if rozpoznające typ obiektu, do którego zachowanie jest doczepione na instrukcję switch wykorzystującą dopasowanie wzorca (ang. pattern matching). Informacje na temat pattern matching w dokumentacji Microsoft.
 - 
W projekcie Tekst z zadania I dodaj klasę zachowania dziedziczącego po 
Behavior<TextBox>, w którym subskrybowane jest zdarzenie TextChanged pola edycyjnego w celu odtwarzania dźwięku po każdym wprowadzeniu litery. Do emisji dźwięku użyj polecenia SystemSounds.Beep.Play();.
 - 
Dla chętnych. .NET Standard to nie nowa wersja platformy z rodziny .NET, a standard dla tych platform. Biblioteka .NET Standard może być użyta w aplikacji dla .NET Framework, .NET Core, UWP, Mono i innych. Postaraj się umieścić w bibliotece .NET Standard model i model widoku z aplikacji przeniesionej do UWP, a następnie wykorzystaj ją w projektach KoloryWPF i KoloryUWP. Usuń foldery Model i ModelWidoku w obu projektach, aby mieć pewność, że wykorzystywane są klasy z biblioteki. Problemem będzie z pewnością wykorzystanie klasy 
Windows.UI.Color w modelu widoku. To klasa należąca do UWP. Kod źródłowy rozwiązania jest w katalogu z kodami źródłowymi. Dodatkowo, spróbuj zmienić widok w aplikacji UWP tak, żeby ułożenie kontrolek było kontrolowanej za pomocą pojemnika RelativePanel.
 - 
Dla chętnych. W projekcie Zegar, w zachowaniu 
PrzesuwanieOkna dodaj zmianę kursora myszy w trakcie przenoszenia okna (na ikonę z ręką).