Makale Özeti

Bu makalemizde geliştiricilerin WPF 'i tercih etme nedenlerinden 7 - 6 ve 5 puan alan özelliklerini incelemeye başlayacağız. Bu yazılarımızı incelerken en yüksek puandan en alt puan alan özelliğe doğru incelenmiştir.

Makale

7 Puan - Kolayca Uyum Sağlanabilen UI Yapısı

WPF öncesi hazırlamış olduğumuz form uygulamalarını derlediğimiz zaman nasıl bir sonuç ile karşılaşacağımızı tam olarak bilemiyorduk. Her ne kadar sürükle bırak form kontrollerinin yerleri biliyor olsak da kod tarafında oluşturduğumuz ekran görüntüleri tamamen piyango gibiydi. Bu durum Visual Studio 2008 ile WPF uygulamaları geliştirilmesi esnasında kod ile tasarım ekranını tam uyum değişmesi ile giderilmeye başlanmıştı. WPF uygulamalarında XAML ile tasarım ekranında yaptığımız bütün işlemlerin tam uyumu bizlere derleme sonrasında nasıl bir ekran ile karşılaşacağımız konusundaki şüphelerimizden kurtulmamızı sağlamıştır.

Win Form geliştiricileri karşılarına gelen ekranları diledikleri oranda kullanabilmekteler. Bu kullanım kolaylığı sayesinde XAML yapısına uyumun çabuk olmasını imkân tanımaktadır.

Kullanım kolaylığı ise Web uygulamaları geliştirirken kullandığımız tablolara benzemektedir. Formu satır ve sütunlara bölerek istediğimiz bölgesine istediğimiz bileşeni ekleyebilmemiz mümkündür.

Win form üzerinde basit bir uygulama geliştirelim. Bu geliştirdiğimiz uygulama HTML tablolarına benzer biçimde olsun ve başlığı, sol sütunu ve sağ sütunu olsun. Sağ sütunda bir çizim nesnesi olsun, sol sütunda ise listBox yer alsın. Şimdi bahsettiğimiz bu örneği XAML kod ile nasıl oluşturabildiğimize göz atalım.

XAML
<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
      <ColumnDefinition Width="235"/>
   </Grid.ColumnDefinitions>

   <Grid.RowDefinitions>
      <RowDefinition Height="Auto" MinHeight="32" />
      <RowDefinition Height="*" />
   </Grid.RowDefinitions>

   <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
      Background="Cyan" FontSize="18pt" TextAlignment="Center">
     Uyumu Kolay UI Yapısı
   </TextBlock>

   <ListBox Grid.Row="1">
      <ListBoxItem>List</ListBoxItem>
      <ListBoxItem>On</ListBoxItem>
      <ListBoxItem>Left</ListBoxItem>
      <ListBoxItem>Hand</ListBoxItem>
      <ListBoxItem>Side</ListBoxItem>
   </ListBox>

   <Rectangle Grid.Row="1" Grid.Column="1" Fill="LimeGreen" />
   <Ellipse Grid.Row="1" Grid.Column="1" Fill="White" Margin="10" />
</Grid>

Satır ve sütunları kullanarak uygulamamızı geliştirdiğimiz zaman karşımıza nasıl bir ekran görüntüsü geldiğine göz atalım.



Yukarıda bahsettiğimiz yöntemlerin dışında daha kompleks yapılarda oluşturulabilmesi mümkündür. Oluşturulacak olan uygulamalar tamamıyla sizin hayal gücünüz ile doğru orantılıdır.

Formlar üzerinde oluşturabileceğimiz uygulamalar .net 2,0 ‘a göre daha kolay gibi gözükmekle birlikte aslında daha zordur. Bu karmaşık söze neden kullandığımıza gelirsek, eski form kontrollerinde her şeyi sürükle bırak işlemleri ile yaparken yeni nesil formlarda ise sürükle bırak yerine genellikle kod ile yapılmaktadır. Bu işlemler gerçekleştirilirken geliştirici çok daha dikkatli olmalıdır. Çünkü oluşturulacak olan binding işlemlerinde yapılacak bir hata veritabanına erişim dahil olmak üzere bir çok noktada bizleri sıkıntıya sokabilmektedir. Ayrıca oluşturulacak olan tasarımlarda da bir tasarımcıdan yardım almakta yarar vardır.

6 Puan - Esnek İçerik Modelleri

Birçok kontrollerde sabit özellikleri yerine başka özellikler eklenerek kullanarak kullanılmaktadır. Bu tür kullanıma örnek olarak, form üzerinde olan butonun içerisine bir label ekleyerek eklemiş olduğumuz o labelin yan kısmına yeni bir buton daha ekleyerek buton kontrolünün içeriğini zenginleştirmiş oluyoruz. Bir başka örnek daha vermek gerekirse Tab kontrollerinin içeriklerine yeni kontroller eklenerek işlevi arttırılabilmektedir.

WPF uygulamalarında da bu tür içerikleri esnekleştirebilme olanağımız vardır. Bu işlemi bir örnek ile açıklamamız daha mantıklı olacaktır. Örneğimizde butonun içeriğine yazı ekleyeceğiz, daha sonra bu yazının üzerine sürükle bırak ile yeni bir buton eklemek istediğimizde butonun üstüne eklenebilmekle birlikte yazı bölümünün içerisine daha da uyum içerisinde eklenmesine olanak tanıyacaktır.

XAML
<Grid>
   <Button Height="80" VerticalAlignment="Top" Margin="0,0,46,0">
      <StackPanel Orientation="Horizontal">
         <Ellipse Fill="Navy" Stroke="Yellow"
            Width="30" Height="20" />
            <TextBlock VerticalAlignment="Center">
               Baska bir buton daha ekleyin...
            </TextBlock>
      </StackPanel>
   </Button>
</Grid>

Örneğin ekran görüntüsü ise aşağıdadır.



Eklemek istediğimiz butonu “Baska bir buton daha ekleyin…” yazan kısma sürükleyip bırakıyoruz ve yeni ekran görüntümüz aşağıdaki gibi oluyor.



Esnek içerik modellemelerini yalnızca buton değil daha birçok özellik ile de kullanılması mümkündür. Bu kontrolleri içeriksel olarak arttırabilmekle birlikte tasarımcılar yardımıyla hem grafik yardımı ile hem de içerik yönüyle daha kuvvetli uygulamalar yapılabilmesi mümkündür.

5 Puan - Benzetilebilen Kontroller

İçeriklerin modellenebilmesi ile birlikte WPF ‘de benzetilebilen kontrollere de izin verilmektedir. Bu kontroller için uyumlu özellikler ile birlikte kod tarafında form kontrollerine başlamalar yapılmaktadır. Bu bağlamalar için ise ister LinQ ile ister başka bir sınıf ile kullanılabilmesine olanak vardır.

Biraz daha örneklemek gerekirse, şu ana kadar oluşturulmuş en iyi tasarım kontrollü olan Aero WPF yardımları ile oluşturulmuştur. Aynı şekilde Aero dan farklı bir ara yüz kullanmak isteyen kullanıcılar ve Windows System 2008 kullanıcıları için de Windows 2000 tasarımı oluşturulabilmektedir. Uygulamalarımızda bu biçimde birden fazla tasarım kontrolü oluşturmak sistem gereksinimleri konusunda eksiklikleri olan kullanıcılar açısından yararlı olacaktır.

XAML
<Button>
   <Button.Template>
   <ControlTemplate>
      <Grid>
         <Rectangle Fill="VerticalGradient White Red" Stroke="DarkRed"
         RadiusX="10" RadiusY="10" />
         <ContentPresenter Content="{TemplateBinding Button.Content}"
          Margin="{TemplateBinding Padding}"
          HorizontalAlignment="{TemplateBinding
          HorizontalContentAlignment}"
          VerticalAlignment="{TemplateBinding
          VerticalContentAlignment}" />
      </Grid>
   </ControlTemplate>
   </Button.Template>
    Tikla!
</Button>

Yukarıdaki örneğimizde butona WPF ile değişebilen özelliklerini dinamik olarak binding yapıyoruz standart halinden farklı olmasını sağlıyoruz.

Windows geliştirme araçlarıyla birlikte gelen kontroller en doğal halleri ile geliştiricilere sunulmaktadır. Bu doğal haller ise işletim sisteminde kullanılan temalardan alınmaktadır. Fakat bu temalar başka bir kullanıcıda farklı bir görünüm alabilir. Bu durumu ortadan kaldırabilmek için yapmamız gereken Ellipse ve Rectangle ‘ı Shapes sınıfının içerisinde kullanarak kontrolleri özelleştirebiliriz. Böyle durumlarda XAML kod tarafında kaynaklar diye bir kod bloğu oluşturarak bu kod bloğunun içerisine ne tür tasarı işlemleri yapmak istiyorsak bunları ekleriz. Ekledikten sonra ise forma ekleyecek olduğumuz kontrol ile bağlama işlemleri sonucunda kullanılabilir bir hal alacaktır.

Umarım Yararlı olmuştur.
Turhal TEMİZER