ben
OMÜ , Bilgisayar Mühendisliği, 13'
29 Ocak 2013 Salı
Mvvm Proje oluşturma
Bu kısımda Visual Studio 2010 üzerinden simple mvvm projesi başlatarak olusan kısımları açıklamaya çalışalım. Öncelikle aşağıdaki gibi bir proje başlatalım eğer mvvm görünmüyorsa bir önceki bölümdeki programları kurmanız gerekmektedir.
Program açıldığında projenin sağ kısmı aşağıdaki gibi gelecek;
Burdaki;
Locarators kısmı View sayfalarının viewmodel ile iletişimi sağlayan bölüm.
Models kısmı ise; veritabanından gelen verilerin modellere aktarılması gerektiğini önceki yazımızda bahsetmeye çalısmıştım burada bu modelleri tutmamız gerekiyor.
Services kısmı View model ile eğer projemize tcp yada mvc serviseleri varsa bunlarla iletişimin kurulduğu yer. View model ihtiyacı olduğu olayları services kısmından alır services kısmı ise ya bir servisten yada bizim sorgularımızın olduğu bi sınıfa gider. Bu kısmın tasarımı bize kalmıs bu projede ben servis sağlayıcı yerine bir sınıfa sorgularımı yazıp bu bolumu o sınıfa yönlendirmeyi düşünüyorum.
View Model kısmı ise her bir sayfanın olay ve propertylerinin olduğu sınıfları barındıran kısım denilebilir.
Views ise arayuz sayfalarının bulunduğu bolumdur. Arayuz sayfaları xaml turunde olmalı.
App.xaml projenin başlangıç sayfasını belirlediği sayfa. Burada StartupUri="MainWindow.xaml" kısmı açılırken başlatmak istediğimiz sayfayı yazdığımız yerdir. Vasit olarak bir arayüz saydası açalım ve bu sayfaya ıkı textbox ve bir buton koyalım. Bu sayfaya ait bir viewModel olusturup bu sayfaları birbirine bağlayalım.
Views'e sağ tıklayarak new Item=>user control ü secerek yeni bir arayüz sayfası açalım ismi denemeView diyelim. üzerine toolboxtan iki textbox ve bir buton koyalım. ViewModels'e sağ tıklayarak newıtem=>mvvm=>MvvmViewModel i seçelim adınada denemeViewModel koyalım. Bu olusturduğumuz viewModelin services katmanı ile iletişime geçebilmesi için ;
using SimpleMvvmToolkit;
using SimpleMvvmToolkit.ModelExtensions;
using DenemeMvvm.Services;
yukarıdaki kütüphaneleri tanımlamalı ve Initialization and Cleanup bölümünde IXxxServiceAgent ile yazılı kıısmları IProvider ile değiştirmeliyiz. Eğer yukarıdaki kütüphaleri ekleyemiyorsanız, Projenin referance kısmında;
System.Windows.Interactivity.dll
Microsoft.Expression.Interactions.dll
PresentationFramework.dll
SimpleMvvmToolkit-WPF.dll
Yukarıdaki kütüphaneler yoksa bir önceki programlar düzgün kurulmamış olabilir. Yinede her ihtimale karşı kütüphaneleri buradan bulabiliriz
Proje olustuğında services kısmına kendi servise dosyalarını atar . bu dosyaları silebilir yerine yeni bir class açarak kendi Providerı açabiliriz Nihayetinde bu da bir sınıftır. Ben açılan services bolumundeki sınıfların isinlerini Provider ve IProvider olarak değiştiriyorum.
Provider asıl sorguları aldımız yer iken IProvider ise viewModel sayfalarının sorgulara bağlandığı arayüzdür. View model sayfaları Provider ı direk olarak göremez.
Locators kısmında açmış olduğumuz denemeViewModeli tanımlamız gerekli;
public denemeViewModel denemeViewModel
{
get
{
IProvider serviceAgent = new Provider();
return new denemeViewModel(serviceAgent);
}
}
View kısmından ViewModele erişebilmek için de xaml sayfasında bazı düzenlemeler yapmak durumundayız. xmlns kısımlarına aşağıdaki satırları ekleyelim;
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei=http://schemas.microsoft.com/expression/2010/interactions
Aynı tagın içerisine düzen açısımdan sonuna aşağıdaki locators bağlantısını ekleyelim;
DataContext="{Binding Source={StaticResource Locator}, Path=denemeViewModel}"
Teorik olarak katmanlar birbirine bağlanmıs oldu. control propertyleri ile olay bağlantılarını bir sonraki kısımda paylaşmaya çalışacağım. Burda dikkat edilmesi gereken kısım her bir view e ait bir viewModelin olması ve bu olusan View Modellerin Locators ta tanımlanmasıdır. Bu tanımlamayı yapmadığınız takdirde view ile view model iletişim kuramaz. Aynı zamandada View'dede bu tanımladığımız locatorsun tanımlanması gerekli. Property ve olayları bağladığımızda daha da anlaşılır olabilir.
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder