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.

Hiç yorum yok: