Shrnutí a prověrka znalostí

Dokončeno

V tomto modulu jste viděli, jak Univerzální platforma Windows (UPW) a WINDOWS Presentation Foundation (WPF) podporují datové vazby. Teď víte více o procesu propojení uživatelského rozhraní a obchodní logiky aplikace automatizovaným, robustním a vysoce výkonným způsobem.

Naučili jste se aktualizovat uživatelské rozhraní, když se vlastnost objektu změní v kódu a jak aktualizovat vlastnost při změně uživatelského rozhraní. Zobrazili jste seznam prvků (například barev) v sadě ListBox nebo v ComboBox: pouze dva z mnoha ovládacích prvků, které můžete použít k zobrazení kolekce položek na obrazovce. Pokud jste postupovali podle jednotlivých kurzů, máte teď také praktické zkušenosti s ovládáním zobrazení jednotlivých položek v těchto ovládacích prvcích. Máte také zkušenosti s tím, jak upozornit obchodní logiku, že uživatel vybral položku. Nakonec víte, jak v uživatelském rozhraní automaticky odrážet změny v kolekci (například přidávání nebo odebírání položek).

Toto oddělení uživatelského rozhraní a logiky je zásadní při vývoji i středně složitých aplikací. Umožňuje, aby obchodní logika (kód) přemýšlela o obchodních objektech. Například když jsme požádali o jméno uživatele, nemuseli jsme v naší logice brát v úvahu TextBox ovládací prvek. Museli jsme se zabývat pouze objektem String textu, který zadali. Náš seznam oblíbených barev ukládal skutečné ColorDescriptor objekty místo objektů souvisejících s uživatelským rozhraním, například ListItem. Díky datové vazbě ale uživatelské rozhraní může tyto položky stále zobrazovat jakýmkoli způsobem, který si návrhář zvolí: v ListBoxrozložení ComboBoxpodobné mřížce s kartami nebo dokonce karuselem. U žádné z těchto možností se vaše obchodní logika nebude muset měnit.

Správné oddělení logiky a uživatelského rozhraní také umožňuje psát samostatné automatizované testy jednotek pro obchodní logiku. Tyto testy se můžou spouštět bez spuštění aplikace (například pomocí testování částí sady Visual Studio). Testy využívají mechanismus vyzkoušených a otestovaných datových vazeb k přenosu dat mezi uživatelským rozhraním a kódem obchodní logiky.

Zjednodušení kódování tříd

Nakonec jste v tomto modulu viděli, jak můžete využít základní třídu ke zjednodušení kódování tříd vhodných pro datové vazby. Toto byl první krok při použití osvědčených postupů v oboru architektury Model-View-ViewModel (MVVM).

Model, v naší malé ukázce, je dobře ilušován ColorDescriptor třídou. Data uložená o skutečném objektu nebo konceptu jsou v tomto případě barevná.

Zobrazení je náš kód XAML, MainPage.xaml (UWP) / MainWindow.xaml (WPF) a ColorList.xaml spolu se soubory kódem za kódem, MainPage.xaml.cs (UPW) / MainWindow.xaml.cs (WPF) a ColorList.xaml.cs.

Model viewmodel je skutečná obchodní logika, která řídí uživatelské rozhraní a rozhoduje (například jestli má být tlačítko povolené). V naší ukázce UPW jsou třídy MainPageLogic a ColorListLogic třídy v podstatě třídy viewmodel. V ukázce WPF jsou MainWindowDataContextmodely zobrazení , Clock, a ColorListDataContext třídy.

MVVM je nejčastěji používaný model architektury pro architektury uživatelského rozhraní, které podporují datové vazby. K dispozici je mnoho sad nástrojů a architektur MVVM, které vám můžou pomoct začít s vývojem v UPW a WPF, nebo dokonce se sadou Windows App SDK a .NET MAUI. Mezi nejoblíbenější patří:

Než půjdete...

Teď, když jste si nastavili vývoj pro Windows, doporučujeme vám pokračovat ve studiu. Další informace o připojení aplikace ke cloudu najdete v dalším modulu. Nejprve si ale projděte své znalosti pomocí následujícího kvízu.

Prověrka znalostí

1.

Co je datová vazba?

2.

Které rozhraní je potřeba implementovat, aby odráželo změnu vlastnosti jazyka C#v uživatelském rozhraní?

3.

Co je potřeba udělat k přenosu textu zadaného v textovém poli do vlastnosti řetězce jazyka C#prostřednictvím datové vazby?

4.

Co je potřeba udělat k zobrazení objektů uložených v kolekci IEnumerable v seznamu?

5.

Do kolekce přidáváte položky, když je aplikace spuštěná. Jak provedete, aby uživatelské rozhraní tyto změny odráželo?