24 Nisan 2014 Perşembe

Windows Uygulamaları İle Çalışmak

                             WİNDOWS UYGULAMALARI İLE ÇALIŞMAK

            WPF FORMLAR

Yazılım projeleri, yoğun olarak katmansal yapıda inşa edilir. Bütün katmanlarda (veri katmanı, iş katmanı vb) yapılagelen işlerinizde aldığınız tüm tasarım kararlarının toplamını, sunum katmanında kullanıcı ile iletişime geçmek için kullanırsınız.
            WPF (Windows Presentation Foundation) ‘in temeli, modern grafik donanımının avantajlarından yararlananmak için oluşturulan, çözünürlükten bağımsız ve vektör tabanlı işleme altyapısıdır.
            Önceleri kullanılan “WindowsForms” kütüphanelerinden farklı “GDI+” yerine “DirectX” grafik kütüphanesini kullanır. Daha çok bilgisayar oyunlarından hatırladığınız bu kütüphane sayesinde ekran kartları sürücüleri daha etkin kullanılmakta ve daha hızlı görüntü işlemek mümkün olmaktadır.
            Temel anlamda bir form ve onu oluşturan bileşenler resimde verildiği gibidir. Formlar WPF kontrolleri arasında bulunur ve kullanıcı ile iletişimde bulunacak denetimleri kapsamakla görevlidir.




WPF ile yapılan arayüz çalışmalarında bu iki takım üyesinin birbirinden bağımsız çalışabilmesine olanak tanımak ve çalışma ortamı verimliliğini arttırmak için tasarım kodu “XAML” ve arayüze işlevselliği sağlayacak program kodu (C# veya VB) birbirinden ayrılmıştır.

WPF Uygulaması Oluşturma
            Bir WPF uygulaması başlatmanız oldukça basittir. Öncelikle uygulama geliştirme aracınız olan “Visual Studio” programı içinde dosya (File) menüsünden yeni bir proje (New Project) açınız. Ekrana gelen iletişim penceresinden “WPF Application” şablon seçimini yapınız, projeniz için bir isim verip onaylayınız.


Öncelikle “Solution Explorer ” penceresini incelediğinizde “App.xaml” ve “MainWindows.xaml” dosyalarının oluşturulduğunuzu görebilirsiniz.


Uygulama ile ilgili tanımlamaların yer aldığı “App.xaml” dosyası “XAML” biçimli dosyadır. Uygulamayı çalıştırdığınızda , “App.xaml” içinde yer alan bildirimler derleyici tarafından “Application” nesnesine dönüştürülür. Application nesnesini işletim sistemi ile uygulama kodu arasındaki bir arayüz olarak da düşünebilirsiniz.

            “App.xaml” içinde tanımlanan “<Application>…</Application>” etiketinin  “StartupUri” isimli parametresi ile uygulama nesnesi başlatıldığında başlangıç penceresi tasarımının hangi dosyada yer aldığı bilgisini işaret etmektedir.

WPF Form Özellikleri

            WPF şablonu üzerinde bulunan “MainWindows.xaml.cs” dosyasına ailt resimde gösterilen sınıf tanımı incelediğinizde tasarımda bulunacağınız pencerenin “Windows” sınıfından kalıtılmış olarak elde edildiğini görebilirsiniz.



            “MainWindow” ile oluşturulmuş şablon pencereniz “Windows” sınıfının tüm özelliklerini taşıyacaktır. Bu sayede gerek “XAML” tarafında gerekse kod sayfasında değiştirilebilir, metotlarını kullanarak davranışları uygulayabilir, olaylarını işleyerek kullanıcı ile program kodunuzu iletişime geçirebilirsiniz.

Pencerelerin en sık kullanılan özelliklerini örnekleri üzerinden inceleyelim.


Name: Tüm WPF kullanıcı denetimlerinin ortak özellikler arasındadır. Söz konusu nesnenin hafızada sahip olacağı isimdir.



Nesneler


WPF uygulama arayüzü için pencerelerin (window) yanında pek çok kullanıcı denetimini de kendi çatısı sunmaktadır. Pencereler, içerdiğinde kullanıcı denetimlerini barındıran konteynerler gibi davranır. Ancak uygulama arayüzünü asıl oluşturan ve anlamlı hale getiren bu denetimlerdir. 
Düğmeler: Bir eylemi yerine getirmek için tıklamak suretiyle kullanılan denetimdir.

İletişim Kutuları: Yazdırma, dosya açma, kaydetme gibi standart kabul edilen pencerelerdir.

Dijital Mürekkep: InkCanvas ve InkPresenter uygulamalarınız içinde kullanıcının serbest çizim yapmasına olanak veren denetimlerdir.

Belgeler: Raporlama aracı olarak kullanılan belge tipleri ile aynı zamanda yazdırma hizmetini de sunar.

Giriş Kutuları: Kullanıcıdan bilgi almak amaçlı kullanılan denetimlerdir.

Düzen: Pencere içi yerleşimler düzen denetimleri tarafından yapılır.

Resim ve medya:
Redim ve video görselleri pencere içinde kullanmanızı sağlar.

Menüler: Birden fazla komutu bir düzen yapısında sunan denetimlerdir.

Gezinme: Sayfa içi gezinti ve sayfa geçişleri amaçlı kullanılan denetimlerdir.

Seçim: Birden fazla seçim imkanı veya liste türü gösterimler için kullanılan denetimlerdir.

Kullanıcı Bilgileri: Bilgi göstermek amaçlı kullanılan denetimler.

Nesne Özellikleri

Kullanıcı denetimleri, tasarım zamanında “XAML” tarafında statik olarak özellikleri kullanılabilir. Bu sayede denetimleri uygulama arayüzü için özelleştirebilirsiniz.

            “XAML” ile bir nesnenin özellik ataması sahip olduğu etiketler içinde yapılır.





Button: Komut vermek için kullanılan düğmelerdir. “<Button …/>” etiketi ile tanımlanır.

Label: Bilgi görüntülemek için kullanılan etiket türü denetimlerdir. “<Label…/>” etiketi ile tanımlanır.





Textbox: Bilgi girişinin yapılabildiği metin kutusudur.”<TextBox…/>” etiketi ile tanımlanır.





ListBox: Liste kutusudur. Liste türü yapıların gösterimi sağlar. Aynı zamanda kullanıcının listeden seçim yapmasına olanak verir. “<ListBox>…</ListBox>” etiketleri arasında tanımlanır.









Combobox: Açılır liste kutusudur. “<ComboBox>…</ComboBox>” etiketleri arasında tanımlanır.









RadioButton: Seçenek düğmeleri, iki ya da daha fazla seçenek arasından bir seçim yapmanızı sağlar. “<RadioButton …/>” etiketi ile tanımlanır. “IsChecked” özelliği ile onay durumu belirlenebilir.
 





CheckBox: Onay kutuları, bir ya da daha fazla bağımsız seçenek belirlemenizi sağlar. “<CheckBox …/>” etiketi ile tanımlanır. “IsChecked” özelliği ile onay durumu belirlenebilir.

 






Image: Resim gösterimi için kullanılan denetimdir. “<Image …/>” etiketi ile tanımlanır. Resim kaynağı “Source” özelliği ile belirlenir. Resmin denetim üzerine sığdırmak için “Strech” özelliği kullanılır.





  Media: Video oynatımı için kullanılan denetimdir. “<Media …/>” etiketi ile tanımlanır. Media kaynağı “Source” özelliği ile belirlenir.






 “MediaElement” nesnesi ile yürütülmek istenen video üzerinde dilediğiniz bir konuma ulaşmak için “Position”, yürütüm hızını belirleyebileceğiniz “SpeedRatio” ve ses seviyesini ayarlayabileceğiniz “Volume” özelliklerini kullanabilirsiniz.

Özellikleri Dinamik Olarak Değiştirme

Şimdiye kadar, özellikleri statik olarak tasarım görünümünden ve XAML deneyimlerinden faydalandınız. Uygulama penceresi üzerinde yer alan denetimleriniz özelliklerini çalışma anında belirlemek değiştirmek veya değerini kullanmak isteyebilirsiniz. Bunu sağlamak için öncellikle söz konusu denetimlerin mutlaka “Name” parametresi ile belirlenmiş bir ismi olmalıdır. Kod sayfasında ilgili denetime ismi üzerinden ulaşılarak gerek gördüğünüz değerlere ulaşabilir, değiştirebilirsiniz.

            Olayları İşleme

Kullanıcı ile programınız arasındaki etkileşimi denetimlere ait olayları yöneterek gerçekleştirebilirsiniz. Uygulama içerisinde ilgilendiğiniz olaylara abone olmanız koşuluyla, olay meydana geldiğinde bir metodu çalıştırabilirsiniz. Denetimle ilgili bir olayı metoda bağlamak oldukça basittir. Tasarım ekranı üzerinden söz konusu nesneyi seçiniz ve ardından “Properties” panelinden “Event” sekmesini açınız. Yönetmek istediğiniz olay tanımı üzerine çift tıklayınız. Denetimle ilgili olay bildirimi ve olay metodu tanımı otomatik olarak oluşturulacaktır.

            Menü ve İletişim Kutuları

            Programla çalışmak için kullandığınız yüzlerce komut (eylem) bulunur. Pencereler üzerinde çalışma alanınızın daha verimli kullanımı adına bu komutların çoğu menüler altında düzenlenir.


İletişim kutuları, kullanıcıya geri besleme sağlamak veya kullanıcıdan giriş almak için kullanılan özelleştirilmiş bir penceredir. İletişim kutuları tek satırlık mesajlar veren basit mesaj kutularından karmaşık kontroller içeren iletişim kutularına kadar değişik biçim ve büyüklükte olabilir.

Menü Oluşturma

WPF kütüphanesi içinde programlarınız için kullanabileceğiniz, pencere menüsü (Menu) ve bağlı bulunduğu denetim üzerinde fare sağ tuşuna basıldığında açılan, denetim ile ilgili işlemlerin yer aldığı kısayol menülerine (Context Menu) sahiptir. Menüler “<Menu>…</Menu>” etiketleri arasında “<MenuItem>…</MenuItem>” menü seçenekleri eklenerek elde edilir. 

Menü Olaylarını İşleme

Kullanıcı menü üzerinde yapmak istediği işlemi fare sol tuş tıklamasıyla gerçekleştirir. Menü seçeneği (MenuItem) için “fare ile tıklandığında” şeklinde bir kullanıcı etkileşimi WPF denetimi için algılanması gereken bir olay (event) niteliğindedir. Bu olay çoğu WPF denetimlerinde olduğu gibi “Click” adıyla tanımlanır. Olayın meydana gelmesi karşılığında program tarafından bir eylemin gerçekleşmesi gerekir ki bu da ancak bir metodu işaret etmesi ile gerçekleşir.

            Kısayol Menüleri

            Windows uygulamalarında, fare sağ tuş menüsü, kullanıcıların en fazla kullanma eğilimi gösterdikleri denetimlerin arasındadır. Bu tür menülerin özelliği içerik duyarlı olması ve yalnızca etkin denetime ya da forma özgü komutları listelemesidir. WPF içinde “ContextMenu” olarak tanınan kısayol menü denetimi uygulamalarınızda kullanabilirsiniz.  

Kısayol menüleri denetime bağlılığından dolayı söz konusu denetimin “ContextMenu” özelliği altında tanımlanır. “<ContextMenu>…</ContextMenu>” etiketleri arasında “<MenuItem>” öğeleri eklenerek menü seçenekleri oluşturulur.

Ortak İletişim Kutuları
İletişim kutuları, kullanıcıya geri besleme sağlamak veya kullanıcıdan giriş almak için kullanılan özelleştirilmiş pencerelerdir. Bu pencereler sayesinde uygulamalar kullanılabilirlik adına daha fazla yol gösterici olmaktadır. Örneğin herhangi bir dosyayı açmak veya kaydetmek için farklı programların aynı iletişim kutularını kullandığını görmüşünüzdür. Bu işlevsellik o kadar yaygındır ki ortak iletişim kutuları, her program tarafından ortak olarak kullanılmaktadır.

            Doğrulamayı Gerçekleştirme

            Doğrulama, kullanıcının girdiği verilerin türleri ve değerlerini denetlemek amacıyla yapılır.

            Veri Doğrulama

            Veri doğrulama konusunda çeşitli yöntemler vardır. Ancak şu an için .NET platformu WPF için varlık sınıflarınızda doğrulama işlemleri yapabilmenizi sağlamak amaçlı “Windows.CompenentModel” isimli alanında bulunan “IDataErrorInfo” isimli bir arayüz için sözleşmesi sunar.


            
Uygulamanız iş mantığı üzerinde yer alan varlık sınıflarınız ile WPF kullanıcı denetimleriniz arasında bağlantı kurmanızı sağlayan bir mekanizmadır. Bağlantı nesnelerin özellikleri (property) arasında kurulur. bağlantı kurmak         

    Veri Bağlama

Uygulamanız iş mantığı üzerinde yer alan varlık sınıflarınız ile WPF kullanıcı denetimleriniz arasında bağlantı kurmanızı sağlayan bir mekanizmadır. Bağlantı nesnelerin özellikleri (property) arasında kurulur. 

4 yorum: