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ą).