Özet ve bilgi kontrolü

Tamamlandı

Bu modülde Evrensel Windows Platformu (UWP) ve Windows Presentation Foundation'ın (WPF) veri bağlamayı nasıl desteklediğini gördünüz. Artık uygulamanın kullanıcı arabirimini ve iş mantığını otomatik, sağlam ve yüksek performanslı bir şekilde bağlama işlemi hakkında daha fazla bilgi edinebilirsiniz.

Bir nesnenin özelliği kodda değiştiğinde kullanıcı arabirimini güncelleştirme ve kullanıcı arabirimi değiştiğinde özelliği güncelleştirme hakkında bilgi edindiniz. Bir veya ComboBoxbir öğesinde ListBox öğelerin (renkler gibi) listesini görüntülediniz: ekranda bir öğe koleksiyonunu göstermek için kullanabileceğiniz birçok denetimden yalnızca ikisi. Her öğreticiyi izlediyseniz, artık bu denetimlerdeki tek tek öğelerin görüntülenmesini denetleme konusunda da uygulamalı bir deneyime sahip olursunuz. Ayrıca, kullanıcının bir öğe seçtiğini iş mantığınıza bildirme konusunda da deneyimlisiniz. Son olarak, artık kullanıcı arabiriminde koleksiyonunuzdaki değişiklikleri (öğeleri ekleme veya kaldırma gibi) otomatik olarak nasıl yansıtabileceğinizi biliyorsunuz.

Orta düzeyde karmaşık uygulamalar geliştirirken kullanıcı arabirimi ve mantık ayrımı çok önemlidir. İş mantığınızın (kod) iş nesneleri açısından düşünmesine olanak tanır. Örneğin, kullanıcının adını istediğimizde mantığımızdaki denetimi dikkate almak TextBox zorunda değildik. Yalnızca girdikleri metnin nesnesiyle String ilgilenmek zorunda kaldık. Sık kullanılan renkler listemiz, gibi ListItemkullanıcı arabirimiyle ilgili nesneler yerine gerçek ColorDescriptor nesneleri depoluyordu. Ancak, veri bağlama sayesinde kullanıcı arabirimi bu öğeleri tasarımcının seçtiği herhangi bir şekilde görüntülemeye devam edebilir: bir ListBox, bir ComboBox, kartlı kılavuz benzeri bir düzende, hatta döngüde. Bu seçeneklerden herhangi biri için iş mantığınızın değiştirilmesi gerekmez.

Mantığın ve kullanıcı arabiriminin uygun şekilde ayrılması, iş mantığınız için ayrı otomatik birim testleri yazmanızı da sağlar. Bu testler uygulamayı başlatmadan çalıştırılabilir (örneğin, Visual Studio Birim Testi ile). Testler, kullanıcı arabirimi ile iş mantığı kodunuz arasında veri aktarmak için denenmiş ve test edilmiş veri bağlama mekanizmasını kullanır.

Sınıf kodlamayı basitleştirme

Son olarak bu modülde, veri bağlamaya uygun sınıfların kodlamasını basitleştirmek için temel sınıftan nasıl yararlanabileceğinizi gördünüz. Bu, Model-View-ViewModel (MVVM) mimarisinin sektördeki en iyi uygulamasını uygulamanın ilk adımıydı.

Küçük örneğimizde model, sınıfı tarafından ColorDescriptor iyi örneklendirilmiştir. Gerçek dünya nesnesi veya kavramı hakkında depolanan veriler, bu örnekte renktir.

Görünüm, MainPage.xaml (UWP) / MainWindow.xaml (WPF) ve ColorList.xaml kodumuzun yanı sıra mainpage.xaml.cs(UWP) / MainWindow.xaml.cs (WPF) ve ColorList.xaml.cs kod dosyalarıdır.

Görünüm modeli, kullanıcı arabirimini yönlendiren, kararlar alan (örneğin, bir düğmenin etkinleştirilip etkinleştirilmeymeyeceği) gerçek iş mantığıdır. UWP örneğimizde MainPageLogic ve ColorListLogic sınıfları temelde viewmodel sınıflarıdır. WPF örneğinde, MainWindowDataContext, Clockve ColorListDataContext sınıfları görünüm modelleridir.

MVVM, veri bağlamayı destekleyen UI çerçeveleri için en yaygın kullanılan mimari desenidir. UWP ve WPF'de, hatta Windows Uygulama SDK'sı ve .NET MAUI'de geliştirmenize hızlı bir başlangıç yapabilecek birçok MVVM araç seti ve çerçevesi vardır. En popülerlerden bazıları şunlardır:

Gitmeden önce...

Artık Windows geliştirme için hazır olduğuna göre, öğrenmeye devam etmenizi öneririz. Uygulamanızı buluta bağlama hakkında daha fazla bilgi edinmek için sonraki modüle göz atın. Ancak önce aşağıdaki testle bilginizi kontrol edin.

Bilgi kontrolü

1.

Veri bağlama nedir?

2.

Kullanıcı arabirimindeki C# özelliğinin değişikliğini yansıtmak için hangi arabirimi uygulamanız gerekir?

3.

Veri bağlama aracılığıyla bir metin kutusuna girilen metni C# dizesi özelliğine aktarmak için ne yapmanız gerekir?

4.

IEnumerable koleksiyonunda depolanan nesneleri liste kutusunda görüntülemek için ne yapmanız gerekir?

5.

Uygulama çalışırken koleksiyonunuz için öğeler eklersiniz. Kullanıcı arabiriminin bu değişiklikleri yansıtmasını nasıl sağlayabilirsiniz?