Wszelkie prawa zastrzeżone. Nieautoryzowane ... · UWP, widokiem jest kod XAML opisujący graficzny interfejs użytkownika (ang. graphical user interface — GUI). Z widokiem związana
Post on 10-Jul-2020
0 Views
Preview:
Transcript
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Opieka redakcyjna: Ewelina BurskaProjekt okładki: Studio Gravite/OlsztynObarek, Pokoński, Pazdrijowski, Zaprucki
Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.
Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: helion@helion.plWWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/vs17zaMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
ISBN: 978-83-283-3825-8
Copyright © Helion 2018
Printed in Poland.
• Kup książkę• Poleć książkę • Oceń książkę
• Księgarnia internetowa• Lubię to! » Nasza społeczność
Spis treści
Wstęp ............................................................................................................... 15
Część I. Projektowanie aplikacji WPF sterowanych zdarzeniami ............................. 17
Rozdział 1. Szybki start. Pierwsza aplikacja WPF .................................................. 19
Wzorzec widoku autonomicznego ......................................................................................... 19Tworzenie projektu .................................................................................................................. 20Projektowanie interfejsu .......................................................................................................... 21Kilka uwag na temat kodu XAML opisującego interfejs okna ........................................... 25Zdarzenia ................................................................................................................................... 26Własności ................................................................................................................................... 32Zapisywanie i odtwarzanie stanu aplikacji ............................................................................ 33Zadania ....................................................................................................................................... 37
Rozdział 2. Notatnik. Przegląd komponentów WPF .............................................. 39
Projektowanie interfejsu aplikacji i menu główne ............................................................... 39Tworzenie projektu aplikacji i jej interfejsu .................................................................. 40Zmiana nazwy okna .......................................................................................................... 42Zmiana ikony okna i aplikacji ......................................................................................... 42Zgodność projektu z wersjami platformy .NET ............................................................ 43Pasek stanu ......................................................................................................................... 43Menu główne aplikacji ...................................................................................................... 44
Okna dialogowe i pliki tekstowe ............................................................................................. 45Wybór pliku za pomocą okna dialogowego .................................................................. 46Zapisywanie tekstu do pliku ............................................................................................ 49Potwierdzenie zamknięcia aplikacji ................................................................................ 50Czyszczenie zawartości pola tekstowego ....................................................................... 54
Menu Edycja .............................................................................................................................. 55
Poleć książkęKup książkę
6 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Menu Widok ............................................................................................................................. 56Pozycje menu z możliwością zaznaczania ..................................................................... 56Kolor tła. Współpraca z obiektami Windows Forms ................................................... 58Czcionki .............................................................................................................................. 61
Drukowanie ............................................................................................................................... 65Obsługa klawiszy skrótów ....................................................................................................... 67Ikony menu ............................................................................................................................... 68Pasek narzędzi ........................................................................................................................... 71Wstążka ...................................................................................................................................... 73
Menu aplikacji ................................................................................................................... 73Pasek szybkiego dostępu .................................................................................................. 76Zakładki .............................................................................................................................. 77
Lokalizacja ................................................................................................................................. 80Zadania ....................................................................................................................................... 84
Rozdział 3. Zdarzenia trasowane (routed events)
i polecenia trasowane (routed commands) .......................................................... 87
Pojedyncza kontrolka ............................................................................................................... 87Zagnieżdżanie przycisków ....................................................................................................... 89Kontrola przepływu zdarzeń trasowanych ............................................................................ 90Przerwanie serii ......................................................................................................................... 92Bulgotanie (bubbling) i tunelowanie (tunneling) ................................................................ 93Dynamiczne tworzenie przycisków zagnieżdżonych .......................................................... 94Polecenia trasowane ................................................................................................................. 95
Rozdział 4. Przeciągnij i upuść (drag & drop) ...................................................... 103
Interfejs przykładowej aplikacji ............................................................................................ 104Rozszerzanie kontrolki ListBox ............................................................................................ 105Inicjacja procesu przeciągania i przenoszone dane ........................................................... 107Akceptacja upuszczenia elementu ........................................................................................ 109Reakcja na upuszczenie elementu ........................................................................................ 110Przenoszenie elementów między aplikacjami .................................................................... 111Opóźnione inicjowanie procesu przenoszenia ................................................................... 114Przenoszenie wielu elementów ............................................................................................. 115Zadania ..................................................................................................................................... 118
Poleć książkęKup książkę
Spis treści 7
Rozdział 5. Choinka. Zabawa w WPF .................................................................. 119
Okno o dowolnym kształcie .................................................................................................. 119Przesuwanie okna ................................................................................................................... 121Zamykanie okna ...................................................................................................................... 122Splash screen ........................................................................................................................... 124Ikony w obszarze powiadamiania ........................................................................................ 125Odtwarzanie pliku dźwiękowego ......................................................................................... 128Zadania ..................................................................................................................................... 129
Rozdział 6. Gra Reversi. Model i widok ............................................................... 131
Model — silnik gry ................................................................................................................. 132Stan planszy ...................................................................................................................... 133Konstruktor klasy ............................................................................................................ 134Implementacja zasad gry ................................................................................................ 134Obliczanie liczb pól zajętych przez graczy ................................................................... 137
Testy jednostkowe .................................................................................................................. 138Widok ....................................................................................................................................... 142
Graficzna prezentacja planszy ....................................................................................... 142Interakcja z użytkownikiem ........................................................................................... 146Historia ruchów ............................................................................................................... 147
Wykrywanie szczególnych sytuacji w grze .......................................................................... 148Komputer gra w Reversi ........................................................................................................ 153
Rozbudowa silnika .......................................................................................................... 153Jak znaleźć najlepszy ruch? ............................................................................................ 154Gra z komputerem .......................................................................................................... 160
Menu ........................................................................................................................................ 161Zadania ..................................................................................................................................... 164Zadania zaawansowane .......................................................................................................... 164
Rozdział 7. Separacja modułów ......................................................................... 167
Kontrolka prezentująca planszę ............................................................................................ 168Interfejs to kontrakt ................................................................................................................ 178Biblioteka ................................................................................................................................. 180Zadania ..................................................................................................................................... 182
Rozdział 8. Przechowywanie danych w plikach XML ............................................ 183
Podstawy języka XML ............................................................................................................ 183Deklaracja ......................................................................................................................... 183Elementy ........................................................................................................................... 184
Poleć książkęKup książkę
8 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Atrybuty ............................................................................................................................ 184Komentarze ...................................................................................................................... 184
LINQ to XML .......................................................................................................................... 185Tworzenie pliku XML za pomocą klas XDocument i XElement ............................. 185Pobieranie wartości z elementów o znanej pozycji w drzewie .................................. 188Odwzorowanie struktury pliku XML w kontrolce TreeView ................................... 190Zapisywanie danych do obiektów. Kursy walut NBP ................................................ 193Zapisywanie danych z kolekcji do pliku XML ............................................................ 196
Zadania ..................................................................................................................................... 197
Rozdział 9. Multimedia .................................................................................... 199
Odtwarzanie wideo ................................................................................................................. 199Synteza mowy .......................................................................................................................... 203Zadanie ..................................................................................................................................... 205
Część II. XAML .................................................................................................. 207
Rozdział 10. Budowanie złożonych kontrolek ..................................................... 209
Konfiguracja przycisku w podoknie Properties ................................................................. 209Pędzle ........................................................................................................................................ 213Formatowanie tekstu na przycisku ...................................................................................... 216Kontrola ułożenia elementów w pojemniku ....................................................................... 218
Rozdział 11. Style ............................................................................................ 221
Siatka i wiele kontrolek .......................................................................................................... 221Zasoby okna ............................................................................................................................. 224Style ........................................................................................................................................... 225Wyzwalacze ............................................................................................................................. 227Zasoby aplikacji ....................................................................................................................... 228
Rozdział 12. Transformacje i animacje ............................................................... 233
Transformacje kompozycji i renderowania ........................................................................ 233Uruchamianie transformacji w wyzwalaczu stylu .............................................................. 239Animacje .................................................................................................................................. 240Animacja w stylu ..................................................................................................................... 242Funkcje w animacji ................................................................................................................. 243Animacja koloru ..................................................................................................................... 245
Poleć książkęKup książkę
Spis treści 9
Rozdział 13. Szablony kontrolek ....................................................................... 247
Rozdział 14. Projektowanie własnych kontrolek ................................................. 251
User Control ............................................................................................................................ 251Custom Control ...................................................................................................................... 253
Rozdział 15. Przegląd pojemników WPF ............................................................ 257
Pojemniki (Layout Containers) ............................................................................................ 257Kontrolki ułożenia (Layout Controls) ................................................................................. 263Projektowanie własnego pojemnika .................................................................................... 267Listy (Items Controls) ............................................................................................................ 269
Szablony ............................................................................................................................ 270Zestaw przydatnych list .................................................................................................. 273
Zadania ..................................................................................................................................... 279
Część III. MVVM ................................................................................................ 281
Rozdział 16. Wzorzec MVVM .............................................................................. 283
Model ........................................................................................................................................ 284Widok ....................................................................................................................................... 284Model widoku ......................................................................................................................... 285
Rozdział 17. Implementacja modelu i modelu widoku ........................................ 287
Model ........................................................................................................................................ 287Warstwa dostępu do danych ................................................................................................. 288Model widoku ......................................................................................................................... 289Alternatywne rozwiązania ..................................................................................................... 292Ratujemy widok ...................................................................................................................... 294Zadania ..................................................................................................................................... 295
Rozdział 18. Wiązanie danych (data binding) ..................................................... 297
Instancja modelu widoku i kontekst danych ...................................................................... 297Alternatywne rozwiązanie ..................................................................................................... 298Wiązanie pozycji suwaków i koloru prostokąta ................................................................. 299Zmiany w code-behind .......................................................................................................... 300Implementacja interfejsu INotifyPropertyChanged .......................................................... 301Powiadomienia w alternatywnych modelach widoku ....................................................... 305Interfejs INotifyDataErrorInfo ............................................................................................. 310Klasa ObservedObject ............................................................................................................ 311
Poleć książkęKup książkę
10 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Rozdział 19. Konwersja danych w wiązaniu ........................................................ 313
Prosta konwersja typów ......................................................................................................... 313Konwersja klas Color i SolidColorBrush ............................................................................. 315Multibinding ........................................................................................................................... 317Wiązanie między kontrolkami .............................................................................................. 318Konwersje „wbudowane” ...................................................................................................... 321Zadania ..................................................................................................................................... 321
Rozdział 20. Polecenia (commands) ................................................................... 323
Interfejs ICommand ............................................................................................................... 323Przycisk uruchamiający polecenie ........................................................................................ 324Sprawdzanie, czy wykonanie polecenia jest możliwe ........................................................ 327Resetowanie stanu suwaków po naciśnięciu klawisza ....................................................... 328Klasa RelayCommand ............................................................................................................ 329Zdarzenia a polecenia ............................................................................................................. 331Zamykanie okna ...................................................................................................................... 334Zadanie ..................................................................................................................................... 335
Rozdział 21. Zachowania, własności zależności i własności doczepione ................ 337
Zachowania (behaviors) ........................................................................................................ 337Własność zależności (dependency property) ...................................................................... 339Własność doczepiona (attached property) i zachowanie doczepione(attached behavior) ................................................................................................................. 343Zadania ..................................................................................................................................... 345
Rozdział 22. Testy jednostkowe ........................................................................ 347
Testy jednostkowe w Visual Studio 2015 i 2017 ................................................................. 348Uruchamianie testów ............................................................................................................. 350Testy wielokrotne ................................................................................................................... 352Dostęp do prywatnych pól testowanej klasy ....................................................................... 353Atrapy obiektów (mock objects) .......................................................................................... 355Testowanie konwerterów ...................................................................................................... 359Testowanie wyjątków ............................................................................................................. 360
Rozdział 23. Powtórzenie ................................................................................. 363
Model ........................................................................................................................................ 363Widok ....................................................................................................................................... 364Model widoku ......................................................................................................................... 366Wiązanie .................................................................................................................................. 367
Poleć książkęKup książkę
Spis treści 11
Konwerter ................................................................................................................................ 368Wzorzec MVVM .................................................................................................................... 370Zadania ..................................................................................................................................... 371
Część III. MVVM w przykładach .......................................................................... 373
Rozdział 24. Okna dialogowe w MVVM ............................................................... 375
Klasa bazowa okna dialogowego .......................................................................................... 375Polecenia wykonywane przed wyświetleniemi po wyświetleniu okna dialogowego ................................................................................... 378Okno dialogowe MessageBox ............................................................................................... 382Warunkowe wyświetlenie okna dialogowego ..................................................................... 385Okna dialogowe wyboru pliku .............................................................................................. 387Łańcuch okien dialogowych .................................................................................................. 391Okna dialogowe z dowolną zawartością .............................................................................. 393Zadania ..................................................................................................................................... 402
Rozdział 25. Kontrolki w kontekście MVVM ........................................................ 403
Kontrolka MVVM .................................................................................................................. 403Kontrolka prawie MVVM ..................................................................................................... 409Kontrolka FileBrowse ............................................................................................................. 412Kontrolka FontDialogBox ..................................................................................................... 416Zadania ..................................................................................................................................... 423
Rozdział 26. Notatnik w MVVM ......................................................................... 425
Widok ....................................................................................................................................... 426Model ........................................................................................................................................ 428Model widoku ......................................................................................................................... 430Zmiana rozmiaru czcionki rolką myszy .............................................................................. 432Polecenia .................................................................................................................................. 434Wybór czcionki ....................................................................................................................... 437Drukowanie ............................................................................................................................. 441Zawijanie wierszy i inne ustawienia ..................................................................................... 442Edycja ....................................................................................................................................... 444Historia zmian ......................................................................................................................... 450Klawisze skrótów .................................................................................................................... 453Zadania ..................................................................................................................................... 455
Poleć książkęKup książkę
12 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Rozdział 27. Grafika w WPF ............................................................................... 457
Kształty. Zegar ......................................................................................................................... 457Model widoku .................................................................................................................. 458Widok — zegar cyfrowy ................................................................................................. 460Wykrycie trybu projektowania ...................................................................................... 461Widok — zegar analogowy ............................................................................................ 461Zmiana kształtu okna ..................................................................................................... 465
Efekty ........................................................................................................................................ 469Cień ................................................................................................................................... 469Potok renderowania ........................................................................................................ 473Własny efekt ..................................................................................................................... 474Kompilacja z pakietem Microsoft.HLSL.CSharpVB .................................................. 485
Grafika per pixel ..................................................................................................................... 488Zadania ..................................................................................................................................... 492
Rozdział 28. Kolekcje w MVVM .......................................................................... 495
Model ........................................................................................................................................ 495Operacje CRUD ...................................................................................................................... 499Przechowywanie danych w pliku XML ............................................................................... 499Model widoku zadania ........................................................................................................... 501Kolekcja w modelu widoku ................................................................................................... 505Zadania ..................................................................................................................................... 507
Rozdział 29. Szablony danych ........................................................................... 509
Prezentacja kolekcji w widoku .............................................................................................. 509Style elementów kontrolki ListBox ...................................................................................... 511Konwertery .............................................................................................................................. 513Zapisywanie danych przy zamknięciu okna ....................................................................... 517Modyfikacje kolekcji .............................................................................................................. 519Polecenia CRUD ..................................................................................................................... 526Sortowanie ............................................................................................................................... 527Użycie okien dialogowych ..................................................................................................... 529Zadania ..................................................................................................................................... 534
Rozdział 30. Usługa REST .................................................................................. 535
Protokół HTTP ....................................................................................................................... 535Dlaczego usługi REST? ........................................................................................................... 536Tworzenie usługi REST .......................................................................................................... 537
Rejestrowanie zdarzeń .................................................................................................... 537Model ................................................................................................................................ 539
Poleć książkęKup książkę
Spis treści 13
Kontroler. Metody GET ................................................................................................. 542Wybór formatu zwracanych danych ............................................................................ 546Kontroler. Szablon adresu api/{controller}/{action}/{id} .......................................... 548
Korzystanie z metod GET usługi REST ............................................................................... 550Metody POST .......................................................................................................................... 552Metoda DELETE ..................................................................................................................... 554Zadania ..................................................................................................................................... 558
Dodatek A. LINQ ............................................................................................... 559
Operatory LINQ ..................................................................................................................... 560Pobieranie danych (filtrowanie i sortowanie) .................................................................... 562Analiza pobranych danych .................................................................................................... 563Wybór elementu ..................................................................................................................... 563Weryfikowanie danych .......................................................................................................... 563Prezentacja w grupach ........................................................................................................... 564Łączenie zbiorów danych ...................................................................................................... 564Łączenie danych z różnych źródeł (operator join) ............................................................ 565Możliwość modyfikacji danych źródła ................................................................................ 566
Dodatek B. Pakiety NuGet ................................................................................ 569
Instalacja nuget.exe ................................................................................................................ 570Tworzenie pakietu z projektu biblioteki klas ...................................................................... 571Publikacja pakietu ................................................................................................................... 572Test pakietu ............................................................................................................................. 574Zależności między pakietami ................................................................................................ 574Tworzenie pakietu z zestawem bibliotek ............................................................................. 575Pakiet dla wielu platform ....................................................................................................... 576
Dodatek C. Kowariancja i kontrawariancja typów parametrycznych ..................... 579
Skorowidz ...................................................................................................... 585
Poleć książkęKup książkę
14 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Poleć książkęKup książkę
Rozdział 16.
Wzorzec MVVM
Część trzecia książki jest poświęcona przedstawieniu wzorca MVVM. To bardzo ważnywzorzec stosowany nie tylko w aplikacjach opartych na WPF, ale również w tzw. aplikacjachuniwersalnych (ang. Universal Windows Platform — UWP), a wcześniej także w projektachSilverlight. Jako przykładu użyjemy prostej aplikacji KoloryWPF opisanej w rozdziale 1.W tej części będziemy ją stopniowo zmieniać w projekt zgodny ze wzorcem MVVM. Dziękitemu poznamy nie tylko sam wzorzec, ale również wspierające go technologie zawartew WPF. W kolejnej części wykorzystamy zdobytą w ten sposób wiedzę w kilku przykłado-wych projektach.
Aplikacja we wzorcu MVVM składa się z trzech warstw: modelu, modelu widoku i wi-doku (rysunek 16.1). W najprostszym przypadku, takim jak w aplikacji KolorWPF, po-szczególne warstwy mogą się składać tylko z jednej klasy, ale zwykle jest ich oczywiściewięcej.
RYSUNEK 16.1. Warstwy aplikacji we wzorcu MVVM (z lewej polska, a z prawej angielska terminologia)
Poleć książkęKup książkę
284 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
ModelFunkcja warstwy modelu jest najbardziej intuicyjna — odpowiada funkcjom modeli w in-nych wzorcach projektowych, chociażby w klasycznej dwuwarstwowej architekturzemodel-widok lub we wzorcach MVC i MVP. Model przechowuje dane stanowiące stansystemu, do którego należy. To oznacza, że musi zawierać definicje typów, które będąmogły te dane przechowywać. Powinien także zawierać logikę, która będzie tych danychdotyczyła. Całość nie powinna zależeć od technologii specyficznych dla jakiejś konkretnejplatformy lub technologii. Powinna być w pełni przenaszalna. Najlepiej, gdyby jedynąużywaną w nich przestrzenią nazw była przestrzeń System1.
Klasy modelu nie mogą, i to jest bardzo ważne, znać żadnych szczegółów dotyczącychwyższych warstw projektu — nie powinny w żaden sposób od nich zależeć. Model po-winien być całkowicie autonomiczny. To m.in. stwarza bardzo dogodne warunki do jegotestowania.
Kluczowy w projektowaniu warstwy modelu, tak jak generalnie w programowaniu obiek-towym, jest podział odpowiedzialności — należy jasno ustalić, za co odpowiedzialne sąposzczególne klasy lub zbiory klas. Część odpowiedzialności może, a nawet powinna,być wydzielona do osobnych modułów w warstwie modelu. Na przykład za trwały zapisdanych można uczynić odpowiedzialny osobny moduł dostępu do danych (ang. data accesslayer — DAL), który może być statyczną klasą narzędziową przyjmującą instancje klasdomenowych i zapisującą ich stan. Podobnie logika modelu może być wydzielona do osob-nego modułu tzw. logiki biznesowej (ang. buissness logic layer — BLL), która operuje na in-stancjach klas modelu.
WidokWidok jest odpowiedzialny za kontakt z użytkownikiem. W WPF, a także w aplikacjachUWP, widokiem jest kod XAML opisujący graficzny interfejs użytkownika (ang. graphicaluser interface — GUI). Z widokiem związana jest klasa okna, w której w pierwszej częściksiążki bez oporu umieszczaliśmy metody zdarzeniowe. Tworzy ona tzw. kod zapleczawidoku, czyli code-behind. Zgodnie z zaleceniami wzorca MVVM kod ten powinien być 1 Dobrym pomysłem jest tworzenie tej warstwy w metodologii projektowania domenowego (ang.
domain-driven design — DDD). W wielkim uproszczeniu oznacza to, że projektujemy zbiórklas składających się na model razem z ekspertem w dziedzinie, której program ma dotyczyć.Często jest to klient lub osoba przez niego wskazana. Wówczas należy uważnie słuchaćsłownictwa, jakiego ów ekspert używa, bo często stosowane przez niego rzeczowniki są dobrymikandydatami na nazwy podstawowych klas modelu. Z kolei czasowniki towarzyszące tymrzeczownikom będą prawdopodobnie nazwami kluczowych metod. Przy czym w DDDnie chodzi tylko o wybieranie nazw klas i metod, ale przede wszystkim o ich zawartośći wyznaczenie relacji między klasami. Ma ona odzwierciedlać relacje pojawiające się w językuużywanym przez eksperta. To oczywiście trywializacja, ale dobrze oddaje ideę DDD.
Poleć książkęKup książkę
Rozdział 16. Wzorzec MVVM 285
ograniczony do minimum, a najlepiej, żeby go w ogóle nie było. W tym sensie wzorzecMVVM całkowicie odwraca wzorzec widoku autonomicznego. Głównym powodem uni-kania kodu C# w warstwie widoku, a przynajmniej w klasie okna, jest to, że kod ten, jakosilnie związany z kontrolkami, jest nieprzenaszalny, a przy tym też trudny do przetestowa-nia. Ponadto zanurzenie logiki prezentacyjnej w widoku znacząco utrudnia współpracęmiędzy projektantami interfejsu tworzącymi widok a programistami odpowiedzialnymiza niższe warstwy aplikacji. Zmniejsza też elastyczność projektu, utrudniając tym samymjego zmiany.
Model widokuModel widoku jest abstrakcją widoku. Jeżeli możemy sobie wyobrazić kilka wariantówgraficznego interfejsu użytkownika naszej aplikacji, dla różnych użytkowników, środowiski platform, to model widoku w tych wszystkich przypadkach powinien pozostawać takisam. Analogicznie możemy sobie wyobrazić różne stoły, różnej wielkości i o różnychkształtach, z trzema lub czterema nogami, nie zmienia to jednak definicji stołu jakomiejsca, przy którym można usiąść i coś na nim położyć. Podobnie wiele może być pro-jektów widoku. Ale model widoku musi być jak definicja stołu, jego zapisana idea —powinien być jak najprostszy, lecz kompletny. Powinien wobec tego zawierać tylkoelementy konieczne do określenia, do czego mają być użyte widoki. Warto podjąć wysiłek,żeby doprowadzić kod modelu widoku do jak najwyższego poziomu abstrakcji. Z tychgórnolotnych rozważań wynika, że najlepszym sprawdzianem poprawności modelu wi-doku są zmiany wprowadzane w widoku. Tych w trakcie rozwijania projektu zwykle niebrakuje. Jeżeli model widoku jest dobrze zaprojektowany, takie zmiany widoku powinny sięobyć bez jego modyfikacji. Pamiętaj jednak, że jak wiele dobrych praktyk w infor-matyce jest to raczej cel, do którego dążymy, niż twarde wymaganie, stawiane osobieprojektującej model widoku.
Funkcją modelu widoku jest udostępnienie widokowi instancji klas z warstwy modelu(na rysunku 2.1 odpowiada to ruchowi do góry) oraz zmienianie stanu tych instancjiw wyniku działań użytkownika wykrytych w warstwie widoku (ruch w dół). W tym dru-gim przypadku model widoku odpowiedzialny jest m.in. za weryfikację przekazywanychdanych. Model widoku odgrywa więc rolę pośrednika między warstwami modelu i wi-doku, a jednocześnie adaptera dla przekazywanych danych. Owo pośredniczenie najczęściejodbywa się w taki sposób, że obiekty modelu są prywatnymi polami modelu widoku. Mo-del widoku udostępnia je lub ich części w swoich własnościach, jest wobec tego świadomywarstwy modelu, nie powinien być natomiast świadomy warstwy widoku to widokpowinien być świadomy modelu widoku. Połączenie między modelem widoku a wido-kiem jest zwykle bardzo „luźne”. Oparte jest nie na odwołaniach w kodzie C#, lecz nawiązaniach danych umieszczonych w kodzie XAML. To luźne wiązanie (ang. binding)wspomaga niezależną pracę nad widokiem i modelem widoku i znakomicie ułatwia wpro-wadzanie zmian w poszczególnych warstwach, z całkowitym ich przebudowaniem włącznie.
Poleć książkęKup książkę
286 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Ta druga zaleta jest szczególnie warta docenienia, choć jest ona w większym lub mniejszymstopniu zaletą wszystkich wzorców z wyraźnie rozdzielonymi warstwami (modułami).
W modelu widoku zapisana jest cała logika prezentacyjna określająca procedury kon-taktu z użytkownikiem z uwzględnieniem weryfikacji danych. Mimo tego pozostaje łatwado testowania, nie ma w niej bowiem odwołań do kontrolek ani założonej bezpośredniejinterakcji z użytkownikiem.
Doskonale zdaję sobie sprawę, że dla osób, które nie miały jeszcze kontaktu zewzorcem MVVM albo chociażby z MVP lub MVC, większość powyższych zdańo modelu widoku jest trudna do zrozumienia. Zadaniem kolejnych rozdziałówz tej części książki będzie wyjaśnienie tego na konkretnym przykładzie. Po prze-czytaniu dalszych rozdziałów warto wrócić do niniejszego i przeczytać go jesz-cze raz, w całości lub przynajmniej w części dotyczącej modelu widoku. To po-winno pomóc poukładać sobie w głowie wiedzę o MVVM.
W przypadku aplikacji KoloryWPF modelem może być prosta klasa opisująca kolor, za-wierająca tylko trzy lub cztery składowe typu byte. Będzie to klasa w stylu POCO (z ang.plain old CLR object). Jej jedynym zadaniem będzie przechowywanie danych, bez żadnejrozbudowanej logiki, dla której w tym projekcie nie ma po prostu zapotrzebowania.Odpowiedzialność za zapis stanu modelu pozostawimy osobnej klasie statycznej rów-nież należącej do warstwy modelu. Prostota naszej aplikacji spowoduje, że model wido-ku będzie z początku równie prosty i w istocie bardzo podobny do samego modelu.Z czasem dodamy do niego elementy charakterystyczne dla klas modelu widoku, m.in.polecenia i mechanizm powiadomień. A ponieważ podstawowym celem aplikacji jestmożliwość kontrolowania trzech składowych koloru, model widoku musi udostępniaćwłasności reprezentujące te składowe. Oprócz tego wyposażymy go w metodę, którąpotem przekształcimy w tzw. polecenie, umożliwiające zapis stanu aplikacji (czyli de factostanu modelu).
To nie jest oczywiście jedyna architektura, jaką można sobie wyobrazić dla tej aplikacji.Dobrym modelem mogłaby być przecież klasa Properties.Settings utworzona przezVisual Studio w momencie określania ustawień aplikacji. Przy takim założeniu naszymjedynym zadaniem pozostaje napisanie modelu widoku, który tę klasę udostępniłby wi-dokowi. Można również rozważyć klasę System.Windows.Media.Color jako klasę mode-lu, ale nie uważam, żeby korzystanie z klas przeznaczonych do budowania interfejsubyło dobrym pomysłem na tworzenie modelu. Dlatego pozostaniemy przy rozwiązaniu„kanonicznym”, lecz pamiętając, że wzorzec MVVM pozwala na pewne wariacje (por.projekt ZegarWPF z rozdziału 28.).
Ostrzegałem już, że aplikacja, którą od tego momentu będziemy przebudowywać, jestbardzo prosta, w kontekście uczenia się wzorca MVVM to jednak moim zdaniem zaleta.Brak szczegółów związanych z bardziej skomplikowanym projektem pozwoli czytelnikowiłatwiej dostrzec istotę wzorca.
Poleć książkęKup książkę
SkorowidzA
akcja Execute, 377analiza pobranych danych, 563animacja DoubleAnimation, 241, 245animacje, 123, 240
funkcje, 243kolorów, 245w stylu, 242
aplikacje sterowane zdarzeniami, 17argument sender, 79arkusze stylów CSS, 221atrapy obiektów, mock objects, 355atrybut, 184
Angle, 234Background, 226CallerMemberNameAttribute, 303Click, 46Closing, 53Command, 325ContentProperty, 393CornerRadius, 266Duration, 241Fill, 32FontSize, 216Foreground, 226Header, 45Height, 23HorizontalAlignment, 23Icon, 70InputGestureText, 44IsCancel, 396IsCheckable, 56IsDefault, 396KeyDown, 32LoadedBehavior, 199
Margin, 23Name, 26Orientation, 258PreviewMouseLeftButtonDown, 107RelativeSource, 325RepeatBehavior, 241Storyboard.TargetProperty, 241StringFormat, 321, 460Style, 226TargetType, 226TextChanged, 51Title, 42ValueChanged, 27VerticalAlignment, 23Width, 23x:Class, 25xmlns, 25
AV, autonomous view, 19
B
bibliotekaMicrosoft.Expression.Interaction.dll, 332,
337, 467, 518System.Drawing.dll, 73, 125System.Speech.dll, 203System.Windows.Controls.Ribbon.dll, 73System.Windows.Form, 59, 73s.dll, 125System.Windows.Interactivity.dll, 332, 337,
432, 467, 518Windows Forms, 58
biblioteki.NET, 59DLL, 180przenośne PCL, 295
Blend for Visual Studio 2017, 216
Poleć książkęKup książkę
586 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
BLL, buissness logic layer, 284bulgotanie, bubbling, 93, 101
C
Choinka, 119cień, 469
obrót, 472code-behind, 27, 46, 284, 300, 301
kontrolki, 409, 413CRUD, create, read, update, delete, 499CSS, cascading style sheets, 221czcionka, 61, 276, 277
konfiguracja, 63wygląd, 439zmiana rozmiaru, 432zmienianie, 65
D
DAL, data access layer, 284, 288data binding, 297debugowanie, 28definiowanie
stylu, 225typów inwariantnych, 579wartości doczepionej, 397własności, 33zachowania, 338zachowania doczepionego, 343
deklaracja, 183deserializator, 551dodawanie biblioteki do referencji, 181dostęp
do danych, 284do pól prywatnych, 353
drag & drop, 103drukowanie, 65, 441DRY, Don’t Repeat Yourself, 54, 221drzewo
kontrolek XAML, 28, 29TreeView, 269węzłów, 190XML, 191
DTO, Data Transfer Object, 289
dynamiczne tworzenieplanszy, 144przycisków, 94
dyrektywa using, 46dźwięk, 128, 204
E
edycjakolekcji, 519tekstu, 444ustawień aplikacji, 34
edytor kodu XAML, 21efekt cienia, 469efekty własne, 474ekran powitalny, 124element, 184
applicationSettings, 34, 37Bold, 217Button, 213CustomContentDialogBox, 417DoubleAnimation, 241Ellipse, 461EventTrigger, 332główny, 189GradientStop, 214Grid, 23, 221, 251GridSplitter, 104InvokeCommandAction, 332LinearGradientBrush, 224ListBox, 104MediaElement, 199MenuItem, 44MessageDialogBox, 385, 391, 531Rectangle, 21Ribbon, 73ScrollViewer, 433Separator, 44Setter, 226, 239SimpleMessageDialogBox, 377, 529Slider, 21StatusBarItem, 44System.Runtime.PropertyInfo, 399TextBlock, 106, 216TextBox, 40, 47ToolBar, 71UserControl, 251
Poleć książkęKup książkę
Skorowidz 587
userSettings, 34Window, 25, 97Window.Resources, 523
etykietaprzycisku, 216TextBlock, 271
F
filtrowanie, 562focus, 28, 328, 344format
JSON, 546XML, 546
formatowanie ścieżki pliku, 392formaty zwracanych danych, 546formularz, 521funkcje
w animacji, 243wygładzania, 244
funkcjonalności pola edycyjnego, 433
G
garbage collector, 31gra Reversi, 131
granie z komputerem, 160historia ruchów, 147implementacja, 134interakcja z użytkownikiem, 146menu, 161model, 132obliczanie liczb pól, 137prezentacja planszy, 142rozbudowa silnika, 153stan planszy, 133testy jednostkowe, 139tworzenie kontrolki, 168widok, 142wykrywanie sytuacji, 148wyszukiwanie ruchu, 154
gradient, 214liniowy, 216radialny, 214
graficzny interfejs użytkownika, GUI, 39, 284grafika, 457
grupowaniedanych, 564transformacji, 237
GUI kontrolki, 412
H
HLSL, High-level Shader Language, 474HTTP, Hypertext Transfer Protocol, 535
I
ikonaBrush Resources, 210menu, 68okna, 42w zasobniku, 125
implementacjainterfejsu ICommand, 323interfejsu INotifyPropertyChanged, 301,
305modelu, 287modelu widoku, 287
inicjator obiektu, 35inicjowanie
koloru, 31procesu przenoszenia, 107
instalacja nuget.exe, 570instancja modelu widoku, 297IntelliSense, 29interfejs
aplikacji, 21, 39, 178ICommand, 95, 323IComparable, 527IDataErrorInfo, 310IEnumerable<>, 560, 563IMultiValueConverter, 317, 318INotifyCollectionChanged, 505, 507, 509INotifyDataErrorInfo, 310INotifyPropertyChanged, 301, 305, 307,
377, 458, 502interfejsy silników gier planszowych, 179interpolacja liniowa, 158
Poleć książkęKup książkę
588 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
J
językHLSL, 474XML, 183
K
katalog projektu, 21kierunek cienia, 472klasa
BlurEffect, 469BooleanToVisibilityConverter, 442Brush, 299Brushes, 273, 274ByteToDoubleConverter, 314Color, 287, 315ColorConverter, 272CommandDialogBox, 387Control, 63, 253CustomContentDialogBox, 397DataObject, 108DropShadowEffect, 469File, 46Fonts, 276Graphics, 457List<>, 527MediaPlayer, 199MessageBox, 386MessageDialogBox, 385ObjectDataProvider, 273ObservedObject, 311OpenFileDialog, 48Panel, 257Path, 46PrintDialog, 65RelayCommand, 329, 437, 517Resources, 82ReversiSilnik, 133ShaderEffect, 476Shape, 457SolidColorBrush, 315StackPanel, 218TextBox, 450UIElement, 233WebApiConfig, 546Window, 186
XDocument, 185, 187, 189XmlTextReader, 188
klasykonwertera, 369modelu, 284, 364, 429modelu widoku, 366, 430, 459okien dialogowych wyboru pliku, 388potomne, 153testów jednostkowych, 349własnego efektu, 476
klawisze skrótów, 67, 453kod zaplecza widoku, Patrz code-behindkolekcja
obiektów RuntimePropertyInfo, 274Triggers, 227
kolekcjemodyfikacje, 519prezentacja w widoku, 509w modelu widoku, 505w MVVM, 495
kolor tła, 58kolory, 288komentarz, 184komórka, 222kompilacja
shadera, 475warunkowa, 356
konfiguracjaczcionki, 63okna zapisu pliku, 49pędzla, 211przycisku, 209
konstruktor, 187klasy, 134
kontekstdanych, 297wiązania widoku, 431
kontrawariancja typów parametrycznych, 579kontrola przepływu zdarzeń trasowanych, 90kontroler, 542, 543, 548kontrolka, 87, Patrz także element
Border, 266Button, 203, 264CheckBox, 91, 92ComboBox, 203, 270DatePicker, 524FileBrowse, 412, 413, 415
Poleć książkęKup książkę
Skorowidz 589
FontDialogBox, 416, 439kod widoku, 417kontekst wiązania, 420konwerter czcionki, 416testowanie, 422
GridSplitter, 104ItemsControl, 269Label, 200ListBox, 91, 100, 105, 147, 269, 511MediaElement, 199MenuItem, 56MVVM, 403Popup, 265prawie MVVM, 409ScrollViewer, 263Slider, 22, 203TextBlock, 44, 216, 264TextBox, 46, 55TreeView, 190, 192, 193ViewBox, 264
kontrolkizmiana ułożenia, 234niestandardowe, Custom Control, 249, 253style, 225szablony, 247ułożenia, Layout Controls, 263użytkownika, User Control, 249, 251własne, 168, 251WPF, 21, 39wyzwalacze, 227złożone, 209
konwersjatypów, 313wiele-do-jednego, 317
konwerter, 313, 368, 408, 513AlternationConverter, 321BooleanToVisibilityConverter, 321BorderGapMaskConverter, 321DataGridLengthConverter, 321JournalEntryUnifiedViewConverter, 321MenuScrollingVisibilityConverter, 321ProgressBarBrushConverter, 321ProgressBarHighlightConverter, 321ZoomPercentageConverter, 321
konwerteryczcionek, 401, 416godzin, 463
koloru, 316obliczające kąt, 484
kończenie gry, 152kowariancja typów parametrycznych, 579kształt kursora, 109kształty, 457kursy walut NBP, 193
L
LINQ, Language Integrated Query, 185, 559grupowanie danych, 564łączenie zbiorów danych, 564metody rozszerzające, 560modyfikacja danych źródła, 566operator join, 565operatory, 560pobieranie danych, 562struktura zapytania, 562weryfikowanie danych, 563
LINQ to DataSet, 567LINQ to Entity, 567LINQ to Objects, 560, 567LINQ to XML, 185, 500lista, 147
czcionek, 276dekoracji tekstu, 278grubości czcionki, 277Items Controls, 269kolorów, 275ListBox, 90, 269ListView, 269rozwijana ComboBox, 203style elementów, 511zadań, 497
log, 538logika biznesowa, 284lokalizacja, 80
Ł
łańcuch okien dialogowych, 391, 532łączenie
danych z różnych źródeł, 565zbiorów danych, 564
Poleć książkęKup książkę
590 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
M
macierz transformacji, 238mechanizm
Live Unit Testing, 350przeciągnij i upuść, 103Reflection, 273
menu, 161aplikacji, 73Edycja, 55główne, 44Widok, 56z ikonami, 71
metodaAddElementToNode, 190Arrange, 267CanExecute, 327Close, 334Convert, 318ConvertBack, 315createFlowDocument, 65DELETE, 554DependencyProperty.RegisterAttached,
343Descendants, 190DoDragDrop, 108Element, 189Equals, 555Execute, 325Executed, 100GET, 542, 545, 549, 550GetItemAt, 106GetModel, 507Load, 189Measure, 267MediaElement.Play, 199MessageBox.Show, 385Nodes, 189PopulateTreeViewWithXmlFile, 190POST, 552PreviewExecuted, 100PrintDialog.PrintDocument, 65sliderR_ValueChanged, 29Sort, 527, 528TextBox.Redo, 450TextBox.Undo, 450Type.GetProperties, 274
Window.Close, 122Window_Closed, 328zdarzeniowa kliknięcia przycisku, 525
metodykonwertujące priorytet zadania, 496parsujące, 194rozszerzające LINQ, 560zdarzeniowe, 29, 55, 57
przerwanie sekwencji wywoływań, 92model, 132, 284, 287, 363, 428, 495, 539model widoku, 285, 289, 292, 293, 366, 430,
458, 501alternatywny, 305kolekcje, 505pojedynczego zadania, 502
moduł, 167dostępu do danych, 284logiki biznesowej, 284
modyfikacjadanych źródła, 566kolekcji, 519
modyfikator ref, 59mowa, 203multibinding, 317, 524multimedia, 199MVVM, model-view-viewmodel, 16, 281, 370
kolekcje, 495kontrolki, 403model, 284, 363model widoku, 285, 366notatnik, 425okna dialogowe, 375struktura aplikacji, 370warstwy aplikacji, 283wiązanie danych, 297, 367widok, 284, 364
myszazmiana rozmiaru czcionki, 432
N
naciśnięcie klawisza Escape, 32nazwa okna, 42Notatnik, 39
drukowanie, 65ikona okna, 42ikony menu, 68
Poleć książkęKup książkę
Skorowidz 591
klawisze skrótów, 67lokalizacja, 80menu Edycja, 55menu główne, 44menu Widok, 56okna dialogowe, 45pasek narzędzi, 71pasek stanu, 43projektowanie interfejsu, 39wstążka, 73
Notatnik w MVVM, 425drukowanie, 441edycja, 444funkcjonalności pola edycyjnego, 433historia zmian tekstu, 450klawisze skrótów, 453kod widoku, 426model, 428model widoku, 430polecenia, 434ustawienia, 442widok, 426wybór czcionki, 437zawijanie wierszy, 442zmiana rozmiaru czcionki, 432
NuGet, 332, 474, 569publikacja pakietu, 572test pakietu, 574tworzenie pakietu, 571
NuGet CLI, 570
O
obiektDataObject, 108, 115FlowDocument, 65RotateTransform, 234typu WritableBitmap, 488XDocument, 188XElement, 188
obiektytypu
System.Reflection.RuntimePropertyInfo,274
Windows Forms, 58obrót, 234, 250, 472odczyt atrybutu elementu, 189
odpowiedź, response, 535odśmiecacz, 31odtwarzacz MediaElement, 199odtwarzanie
dźwięku, 128, 204wideo, 199
odwołanie do stylu, 230okno
New Project, 20o dowolnym kształcie, 119przesuwanie, 121Window, 25zamykanie, 122
okno dialogowe, 375, 529elementy, 436FontDialogBox, 437klasa bazowa, 375klasy, 388łańcuch, 532łańcuch wywołań, 391MessageBox, 382polecenia, 378wartości doczepione, 397warunkowe wyświetlanie, 385wyboru pliku, 387wybór czcionki, 64wybór pliku, 46, 202z dowolną zawartością, 393z formularzem, 533zapis pliku, 49
operacjaDELETE, 536GET, 536POST, 536PUT, 536
operacjeCRUD, 499, 526, 536protokołu HTTP, 544
operator join, 565operatory LINQ, 560otwieranie pliku, 390
P
pakietdla wielu platform, 576Microsoft.HLSL.CSharpVB, 485
Poleć książkęKup książkę
592 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
pakietNuGet, 569z zestawem bibliotek, 575zależności, 574
parametr shadera, 477parser XAML, 216parsowanie ręczne pliku XML, 551pasek
narzędzi, 71stanu, 43szybkiego dostępu, 76
pędzel, 211, 213Brush, 299LinearGradientBrush, 214, 224RadialGradientBrush, 214
pętla do..while, 136pixel, 488plansza, 133, 168
kolory, 172rozmiar, 171tworzenie, 170zdarzenia, 174, 175zmiana kolorów, 173
plikApp.config, 34MainWindow.xaml.cs, 47Resources.pl.resx, 83Settings.Designer.cs, 35Settings.settings, 35user.config, 37
pliki.csproj, 571.ico, 42.nuspec, 571–576dźwiękowe, 128tekstowe, 45XML, 183
płótno Canvas, 261pobieranie
danych, 562nazw kolorów, 274
pochylenie, 237POCO, plain old CLR object, 286podgląd okna, 21podokno
Live Property Explorer, 28Live Visual Tree, 28
Properties, 21, 209konfiguracja przycisku, 209
Solution Explorer, 34Test Explorer, 350Toolbox, 21
podpowiadanie kodu, 29podwójna animacja DoubleAnimation, 241pojemnik, 257, 267
Canvas, 219, 261ComboBox, 203DockPanel, 40, 143, 219, 257, 259Grid, 23, 25, 40, 104, 219, 257ListBox, 104Layout Containers, 257RelativePanel, 262StackPanel, 218, 257, 275UniformGrid, 260WrapPanel, 258
pojemnikiukładanie kontrolek, 218własne, 267
poleedycyjne, 449
TextBox, 203opcji CheckBox, 90tekstowe
czyszczenie zawartości, 54polecenia, 331, 434
CRUD, 526paska narzędzi, 437przed i po wyświetleniu komunikatu, 378sprawdzanie wykonania, 327trasowane, routed commands, 95uruchamianie, 324
polecenie, command, 323CommandBefore, 529CommandCancel, 385CommandNo, 385CommandOK, 385CommandYes, 385Run IntelliTests, 349Show, 377, 391, 529
położenie shaderów, 481potok renderowania, 473potwierdzenie zamknięcia aplikacji, 50powiadomienia, 305pozycja piksela, 491
Poleć książkęKup książkę
Skorowidz 593
prezentacja kolekcji, 509priorytet zadania, 496projektowanie
biblioteki, 180interfejsu, 21interfejsu aplikacji, 39kontrolki MVVM, 403
kod modelu, 404kod modelu widoku, 405kod XAML, 403konwerter, 407wiązanie, 407, 408
pojemnika, 267prostokąt Rectangle, 21protokół HTTP, 535próbnik tekstury, 479przechowywanie
danych, 183, 499składowych koloru, 287stanu kolekcji, 500
przeciągnij i upuść, 103akceptacja upuszczenia, 109inicjacja procesu, 107
opóźniona, 114przenoszenie elementów, 111, 115upuszczenie elementu, 110
przestrzeń nazw, 26JacekMatulewski.WpfUtils, 191Microsoft.VisualStudio.TestTools.UnitTest
ing, 353Microsoft.Win32, 48Notatnik.NET.Properties, 81System.Drawing, 59, 61System.Globalization, 392System.IO, 46System.Speech, 203, 205System.Speech.Synthesis, 203System.Windows.Controls, 257, 397System.Windows.Controls.Ribbon, 79System.Windows.Data, 392System.Windows.Input, 324System.Windows.Media, 60System.Windows.Media.Animation, 124System.Windows.Media.Effects, 474System.Windows.RoutedEventArgs, 88System.Windows.Shapes, 46System.Xml.Linq, 187
przesuwanie okna, 121przesyłanie referencji, 326przycisk
Button, 203formatowanie etykiety, 216uruchamiający polecenie, 324
przyciskitransformacje, 233zagnieżdżone, 89, 94
publikacja pakietu, 572
R
Reflection, 273reguła DRY, 221rejestrowanie
uruchomień metody, 91zdarzeń, 537
renderowanie, 236, 473resetowanie stanu suwaków, 328REST, 535rozmazanie, blur, 469rozszerzanie
kontrolki ListBox, 105klasy Window, 186
rzutowanie, 313
S
scenorys, 123sekcja
get, 33set, 33
separacja modułów, 167shader, 477, 482siatka, 221
Grid, 23podział, 222rozmieszczenie kontrolek, 223
silnik gry, 132skalowanie, 237słownik zasobów, resource dictionary, 371słowo kluczowe this, 58, 106sortowanie, 276, 527, 562Speech API, 203splash screen, 124
Poleć książkęKup książkę
594 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
stanaplikacji, 34suwaków, 328
strukturaaplikacji MVVM, 283, 370drzewa, 190pliku XML, 190zapytania LINQ, 562
styl, 221, 225, 516animacja, 242elementów listy, 511przycisku, 512w zasobach aplikacji, 229w zasobach globalnych, 230
suwakresetowanie, 328Slider, 21, 203
synteza mowy, 203szablon, 270, 272
adresu, 548danych, 509kontrolek, 247kontrolera, 543
szum, 489
T
tarcza zegara, 464testowanie
kontrolki FontDialogBox, 422modelu widoku, 460konwerterów, 359pakietu, 574modelu widoku, 357wyjątków, 360
testyjednostkowe, 138, 347
na żywo, 350uruchamianie, 350w Visual Studio, 348
wielokrotne, 352timer, 160, 202, 461, 483tło, 58
animacja koloru, 245przezroczyste, 120przycisku, 407
transformacja MatrixTransform, 238
transformacjegrupowanie, 237obrót, 234pochylenie, 237skalowanie, 237translacja, 237uruchamianie w wyzwalaczu, 239kompozycji, 233, 236renderowania, 235
translacja, 237tryb
debugowania, 28selekcji, 28
tunelowanie, tunneling, 93, 101tworzenie
instancji modelu widoku, 298kontrolek, 168, 251kontrolek złożonych, 209pakietu, 571, 575pliku XML, 185pojemnika, 267projektu, 20timera, 202usługi REST, 537własności, 33zadania, 523
typ danychbyte, 313double, 313object, 313
typyinwariantne, 579kontrawariantne, 579, 581kowariantne, 579, 582parametryczne, 356wyliczeniowe, 169
U
ukrywanie przycisku, 513upuszczenie przenoszonego elementu, 110uruchamianie
polecenia, 324testów, 350
usługa REST, 181, 535, 536format zwracanych danych, 546kontroler, 542, 548
Poleć książkęKup książkę
Skorowidz 595
metoda DELETE, 554metoda GET, 550metoda POST, 552model, 539rejestrowanie zdarzeń, 537tworzenie, 537
ustawieniapliku efektu, 486projektu, 43
usuwanie zadania, 556, 557UWP, Universal Windows Platform, 15, 283,
318użycie zasobów, 81
V
Visual Studiotesty jednostkowe, 348
W
warstwa dostępu do danych, DAL, 288warstwy aplikacji, 283
model, 284model widoku, 285widok, 284
wartość null, 301, 334warunkowe wyświetlanie okna dialogowego,
386, 387wersje platformy .NET, 43weryfikowanie danych, 563wiązanie
danych, data binding, 297, 299, 367konwersja danych, 313polecenia, 323powiadomienia, 305
dwustronne, 299koloru, 319między kontrolkami, 318widoku, 431
wideo, 199widok, 142, 284, 294, 364, 426, 460
prezentacja kolekcji, 509wielowiązanie danych, 317, 401Windows Forms, 58własności zależności, 267, 378
własnośćActualWidth, 271AllowDrop, 109Angle, 240AssociatedObject, 338Background, 119, 213Center, 209Color, 31, 299ColumnDefinitions, 221, 261Command, 99CommandAfter, 378CommandBefore, 378CommandParameter, 389CommandProperty, 378Content, 209, 393ContentSize, 267DataContext, 298, 301DialogBypassButton, 386Direction, 469DockPanel.Dock, 41, 259doczepiona, attached property, 343Effect, 469FilePath, 389, 412Fill, 30, 213, 299, 301Filter, 48FontFamily, 439FontSize, 439FontStyle, 439FontWeight, 439Foreground, 210, 213, 439Handled, 92HorizontalAlignment, 209HorizontalContentAlignment, 209IsChecked, 56, 265, 442IsDialogBypassed, 386IsEnabled, 97, 343IsMouseOver, 227IsOpen, 265LayoutTransform, 233, 239, 457ListBox.ItemsSource, 274ListBox.SelectedItem, 108MinimalChildSize, 267Minimum, 30ObjectInstance, 274Opacity, 123Priorytet, 496RenderTransform, 233, 234, 457
Poleć książkęKup książkę
596 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
własnośćRoot, 189RowDefinitions, 221ScaleX, 242SelectedText, 55Source, 91StrokeThickness, 457TextDecorations, 63TextWrapping, 56UriSource, 476VerticalAlignment, 209VerticalContentAlignment, 209Visibility, 56, 417zależności, dependency property, 339
WPF, Windows Presentation Foundation, 15wrapper, 48współrzędne teksturowania, 482wstążka, 73
menu aplikacji, 73pasek szybkiego dostępu, 76zakładki, 77
wybórczcionki, 64, 437, 439elementu, 563formatu danych, 546koloru, 61pliku, 387
wyciek pamięci, 31wygląd czcionki, 439wygładzanie, 244wyjątek NullReferrenceException, 301wykrycie trybu projektowania, 461wypełnienie Fill, 299wyświetlenie warunkowe okna dialogowego,
385wywoływania cykliczne, 490wyzwalacz, 227
stylu, 239transformacji, 239
wzorzecMVVM, 283, 370widoku autonomicznego, 19
X
XAML, 207użycie stylów, 516
XML, Extensible Markup Language, 183atrybuty, 184deklaracja, 183elementy, 184komentarze, 184pobieranie wartości z elementów, 188przechowywanie danych, 183, 499struktura pliku, 190tworzenie plików, 185zapisywanie danych, 196
Z
zachowania, behaviors, 337własności zależności, 341
zachowanie doczepione, attached behavior,343
zaczepianie kontrolek, 25zagnieżdżanie przycisków, 89, 94zakładka Events, 29zakładki wstążki, 77zamykanie
aplikacji, 50okna, 53, 122, 334
zapisywanie danych, 517zapisywanie
danych, 517danych do obiektów, 193do pliku XML, 196tekstu do pliku, 49ustawień, 36
zapytanie, request, 535LINQ, 499
zasada DRY, 54zasoby aplikacji, 228zawijanie wierszy, 442zdarzenia, 26, 331
rejestrowanie, 537zdarzenia trasowane, routed events, 87
kontrola przepływu, 90zdarzenie
Click, 54Closed, 186, 332Closing, 123CollectionChanged, 507DragEnter, 103, 109DragOver, 103
Poleć książkęKup książkę
Skorowidz 597
Executed, 97KeyDown, 334MediaFailed, 199MouseDown, 103, 121MouseMove, 121MouseUp, 121PhonemeReached, 204PreviewKeyDown, 67, 122PreviewMouseLeftButtonDown, 107, 114PreviewMouseWheel, 433PropertyChanged, 307, 308SpeakCompleted, 204SpeakProgress, 204TextChanged, 51Window.Closed, 323
Zegar, 457analogowy, 461cyfrowy, 460efekty, 469model widoku, 458widok, 460, 461
zmianaczcionki, 65, 400etykiety przycisku, 88ikony okna, 42koloru, 28, 31koloru tła, 90kształtu okna, 465nazwy okna, 42położenia shaderów, 481pozycji suwaka, 27rozmiaru czcionki, 432
Ź
źródło danych, 273
Poleć książkęKup książkę
598 Visual Studio 2017. Tworzenie aplikacji Windows w języku C#
Poleć książkęKup książkę
top related