24 Nisan 2014 Perşembe

Veriyi Yönetmek

                                         VERİYİ YÖNETMEK


Veri Sorgulama

Günümüz uygulamaları ister masaüstü ister web tabanlı olsun mutlaka bir veri tabanı (database) yazılımı kullanmak zorundadırlar. Çünkü çağımızda bilgi ve bilgiye erişim çok önemli bir rol oynamaktadır. Bir amaç etrafında verileri topluyoruz, sorguluyoruz, bir sonuca ulaşmak için onları işleyip raporlar elde ediyoruz. Çünkü geleceği tahmin etmek istiyoruz. Bu sebepten dolayı bilgisayar programları da, çeşitli bilgileri saklamak, düzenlemek ve tekrar saklamak zorundadır.


Uygulama geliştiriciler ise bu veriler etrafında her zamankinden daha hızlı, esnek, ölçeklenebilir, yüksek erişilebilirlik değerlerine sahip ve performanslı çözümler oluşturmak durumundadırlar.

İşte bu gereksinimlerin karşılığı olarak .Net uygulama geliştiricilere ADO.NET adı verilen ve uygulamanız ile sahip olduğunuz verilerin saklandığı veri tabanı sisteminize erişimde bulunmanıza ve üzerinde işlem yapmanıza olanak sağlayan bir teknoloji sunmaktadır. ADO.NET (ActiveX Data Object) eski nesil ADO veri erişim teknolojisinin .NET için yeniden tasarlanmış halidir. .NET Framework’un bir parçası olarak 1.0 sürümünden beri önemli bir yere sahiptir.

Northwind Veri Tabanı

       Veri bazlı uygulamalar geliştirmede deneysel amaçlı ele alınmış “Nortwind” şirketi müşterilerine yiyecek ve içecek ürünleri satan hayali bir şirkettir. “Northwind” veri tabanı ise şirketin sattığı ürünler (products), müşteriler (customers), müşterilerin verdiği siparişler (orders), faturalar, tedarikçiler (suppliers), ürünlerin teslim edilmesinde kullanılan nakliyeciler (suppliers) ve şirket için çalışan personel (employees) bilgilerinin tutulduğu ilişkili tabloları (table) görünümleri (view) ve saklı yordamları (stored procedure) barındırır.

Veri erişimi ve sorgulama tekniklerini öğreneceğiniz bu modülde uygulama örneklerimiz için “Northwind” veri tabanını kullanacaksınız.     

Veri Tabanı Oluşturma

Northwind veri tabanı için gerekli dosyaları;

http://www.microsoft.com/en-us/download/details.aspx?id=23654 adresinden temin edebilirsiniz.

 Yüklemesi yapılan “SQL2000SampleDb.msi” isimli programı çalıştırdığınız taktirde dosyalarının oluşturulduğunu göreceksiniz. Bu aşamadan sonra yapılması gereken bilgisayarınızda yüklü bulunan SQLServer örneğine (instance) Northwind veri tabanını kayıt etmek olacaktır.

 Gereken işlem adımları

·         Windows Başlat menüsü altında “cmd” yazarak konsol ortamına geçiniz.

·         Konsol ekranında “>cd SQL Server 2000 Sample Databases” komutunu veriniz.

·          “>osql –E –S ComputerName\InstanceName –i instnwnd.sql” komutunu uygulayınız. Komut içinde geçen “ComputerName” kurulumun yapıldığı bilgisayar adı “InstanceName” ise bilgisayarınızda kurulu olan SQL Server’ın adı olarak yazmalısınız.
·
Veri Tabanıyla Bağlantı Oluşturma

      Veri tabanına bağlanmada ADO.NET size “System.Data” isimli alanı içinde bir takın hizmet sınıfları sunmaktadır. “System.Data” isim alanı aynı zamanda oldukça geniş bir sağlayıcı kümesini de içinde barındırır. Bu sayede farklı platformlara ait (Oracle,MySQL,Acces vb.) veri kaynaklarına bağlanabilme imkanı sağlar.

Böylece farklı veri kaynaklarını tek bir uygulamada toplayabilir ve hatta birbirleri ile konuşturabilirsiniz.

ADO.NET uygulama geliştiricilere 4 farklı isim alanı farklı veri kaynaklarına bağlanabilme imkanı sunmaktadır. 


System.Data.SqlClient

MS SQL Server ile çalışabilmek için yazılmış tiplerin yer aldığı bu isim alanı, SQL Server 7.0 ve sonraki versiyonları ile kullanılabilmektedir.


System.Data.OleDB

MS SQL Server 6.5 ve önceki sürümleri, Microsoft Access, Oracle, Microsoft Excel dosyaları gibi OleDB arayüzüne sahip tüm sistemler ile bağlantı kurmak için gerekli hizmet sınıflarını barındırmaktadır.

System.Odbc

ODBC (Open Database Connectivity) standartlarını destekleyen ve ODBC sürücüsü bulunan sistemlere bağlantı kurmayı sağlayan hizmet sınıflarını barındırmaktadır.

System.Data.Oracle

Hangi ilişkisel veri tabanı yönetim sistemi ile bağlantıya geçmek ve üzerinde işlem yapmak istiyorsanız öncelikle ilgili veri sağlayıcısına (provider) ait isim alanını kod satırlarınızın başında “using” deyimi ile dahil etmelisiniz.Bağlanmak istediğiniz veri tabanı yönetim sistemine ait ilgili sağlayıcı (provider) üzerinden bağlantı nesnesinin örneklenmesi ilk aşamadır belirtilebilir. 

.Net 2.0’dan sonra Oracle veri yönetim sistemine daha güçlü destek sağlanmıştır.Ancak Oracle veri sağlayıcısını kullanabilmek için öncelikle “System.Data.OracleClient” referansının proje referansları arasına dahil edilmesi gerekmektedir.



xxxConnection sınıfı üzerinde örnekleme yapılırken kurucu parametresi olarak verilebilir.
 Bağlantı sınıfı üzerinden elde edilen nesnenin .ConnectionString isimli string türünden parametresi ile bildirilebilir.

Bağlantı bilgisi metinsel (string) türünden olup ve buna bağlı belirli kurallara göre yazılır.





Verileri Sorgulama
            Daha önceden veri tabanına kurulmuş olan bağlantı üzerinden verileri çekmek, eklemek, silmek, güncellemek gibi sorgulama işlemlerinizi yürütmek amacıyla ilgili sağlayıcıya ait “Command” sınıfını kullanmanız gerekmektedir. Bu sınıf ile SQL sorgularınızı veri tabanına yollayabilir, veri tabanı üzerinde yer alan saklı yordamlarınızı (Stored Procedure) çalıştırabilir, parametrik yapıdaki sorgularınız için parametre tanımlaması yapabilirsiniz.

 “Command” sınıfına ait en çok kullanılan özellik ve metodlar aşağıda verilmiştir.



Bağlantıyı Kapatma

Açılmış bir bağlantı işlem bittiğinde muhakkak kapatılmalıdır. Bunun sebebi veri tabanının açık bırakılan her bağlantı için kendi sistemi üzerinde ek sistem kaynağı tüketimini gerçekleştiriyor olmasıdır. Söz konusu veri tabanı üzerinde birden fazla uygulama ağ (network) üzerinden işlem yapmaya çalışması ve her biri için açık bırakılan bağlantılar doğal olarak sisteme ek yük getirecek ve bu da sunucunun sorgulama için kullanacağı önemli sistem kaynaklarını aynı zamanda bağlantı trafiğine de harcamasını gerektirecektir. 

Sorgunuzu yürütmeden hemen önce veri tabanı açılmalı ilgili verilerin alınmasından hemen sonra kapatılması doğru davranış olacaktır.

“Command” sınıfına ait yürütme metodlarına “System.Data.CommandBehaviour” parametresi verilebilir. Bu parametre “DataReader” nesnesi kapandığında kullandığı bağlantıyı otomatik olarak kapatılacağı bilgisi verir. Bunu bağlantı nesnesine ait “Close()” metodu kullanmaktan farklı bir yol olarak düşünebilirsiniz. Kullanım şekli;
rd = komut.ExecuteReader(CommandBehavior.CloseConnection);

DLINQ Kullanarak Veri Tabanını Sorgulama

LINQ (Language Integrated Query) “IEnumarable” arayüzüne sahip numaralandırılabilir koleksiyon tiplerini hafızada sorgulamak maksadıyla SQL benzeri söz dizimine sahip bir programlama tekniği sunar. Dile entegre edilmiş sorgu anlamını taşır.

Programlama dili tasarımcıları bu konuda daha az miktarda kod ve daha kolay okunulabilir bir tarzda yazım imkanı sunan LINQ projesini geliştirmiştir. LINQ gerek ana fikri gerekse kullandığı dili SQL’e oldukça benzer ve aynı avantajlar sunar.

DLINQ (Database LINQ) yada diğer adı LINQ to SQL (SQL için LINQ) SQL ile veri tabanı üzerinde yapabileceğiniz sorgulama işlemlerini LINQ kodu olarak .NET ortamında düzenlemenize imkan tanır.

DataContext Sınıfı


 “DataContext” sınıfı uygulamanızın çatısı altında tanımladığınız varlık sınıfları ile veri tabanında yer alan tablolarınız arasındaki bağlantıları yöneterek ve veri akımlarını her iki yapı arasında sağlamakla görevli hizmet sınıfıdır. “System.Data.LINQ” isim alanında yer alır.



VERİ İŞLEMLERİ

Çeşitli yazılım geliştirme platformları tarafından üretilmiş ilişkisel nesne haritalaması (Object / Relational Mapping – O/RM) araçları mevcuttur, bunlardan birkaçı aşağıda verilmiştir;


 .NET platformu: NHibernate, DLINQ, EntityFramework

 JAVA platformu için : JPA, Hibernate, TopLink, iBatis

 Açık Kaynaklı (Open Source) : Business Lojic Toolkit, Euss, LLBLGen

DLINQ İle Veri Bağlama

DLINQ size veri tabanı varlık nesnelerini oluşturmada, kullanmada, seçme, ekleme, silme, güncelleme işlemlerini birer metot olarak sunmada ve bütün bunları basit bir sihirbaz yardımı ile grafik ortamda hızlı olarak gerçekleştirmenize imkan veren küçük ve orta ölçekli yazılım projeleriniz için bir O/RM tasarım aracı sunar.

DLINQ’nun veri erişim katmanı (data access layer) olarak kullanmak için aşağıdaki işlem adımlarını takip ediniz.

 Öncelikle Visual Studio ortamında yeni bir WPF uygulaması (WPFApplication) oluşturunuz.

Solution Explorer paneli içinde uygulama adı üzerinde fare sağ tuş-Add-New Item seçimini yapınız.

 Ekrana gelen “New Item” penceresinden “LINQ to SQL Classes” seçiniz. Name kısmına üretilecek .dbml uzantılı dosyaya vermek isteğiniz ismi yazınız. Bu uygulamada “NorthwindDataClasses” örnek ismi verilmiştir. Ekle (Add) butonuna basınız.


DLINQ’nun veri erişim katmanı (data access layer) olarak kullanmak için aşağıdaki işlem adımlarını takip ediniz.

1.Öncelikle Visual Studio ortamında yeni bir WPF uygulaması (WPF Application) oluşturunuz.

2.Solution Explorer paneli içinde uygulama adı üzerinde Mouse sağ tuş > Add > New Item seçimini yapınız.

3.Ekrana gelen “New Item” penceresinden “LINQ to SQL Classes” seçiniz. Name kısmında üretilecek .dbml uzantılı dosyaya vermek istediğiniz ismi yazınız. Bu uygulamada “NortwindDataClasses” örnek ismi verilmiştir. Ekle (Add) butonuna basınız.

Ekrana “NortwindDataClass.dbml” dosyasına ait içi şu an boş olan bir grafik tasarım penceresi gelecektir.



Nortwind veri tabanı tablolarını grafik ekran üzerinde oluşturmak için öncelikle sunucu ile bağlantı kurmalısınız.”Server Explorer” panelinde “Data Connections” öğesi üzerine Mouse sağ tuş >”Add Connection” seçimini yapınız. Sunucu adı (Server Name) ve veri tabanı adı (database name) bilgilerini girdikten sonra “Tamam” butonuna basınız.


 Server Explorer penceresinden ulaştığınız “Northwind” veri tabanı tablolarını uygulamanızın “NortwindDataClass.dbml” dosyasının içine sürükleyiniz.

            DLINQ için isim alan bildirimlerinin yapıldığını “Northwind” veri tabanı isimlendirme nitelemesinin hemen altında “DataContext” sınıfından kalıtılmış olarak oluşturulan “NorthwindDataContext” isimli bir sınıfın oluşturulduğunu görelebilirsiniz. Bu sınıf “Northwind” veri tabanının şablonudur.



WPF’in en güçlü taraflarından biri olarak görülen bu mekanizmaya veri bağlama (Data Binding) adı verilir ve tamamen “INotifyPropertyChanged” ve “INotifyPropertyChanged” arayüzlerine borçludur.


















DLINQ İle Veri Güncelleme


            Varlık nesneleri uygulamanın çalışma sürecinde hafızada yer alır. Bunlar üzerinde yapmış olduğunuz değişiklik veri tabanı tarafından algılanmaz. Yapılan değişikliklerin veri tabanı tarafına geçirilmesini istiyorsanız veri tabanı nesnesi “SubmitChanges()” metodunu çağırmanız yeterlidir. Bu metod kayıtların veri tabanı üzerinde güncellenebilmesi için SQL sorgusu oluşturur ve veri tabanına uygulatır.

Örnek:

1 numaralı ürünün adını “Chains1” olarak güncelleyiniz.




Öncelikle “NorthwindDataClassDataContext” sınıfı üzerinden “context” nesnesi örneklemesi yapmalısınız. 

Ardından güncellenmek istenen kayıt bilgisi LINQ sorgusu ile getirilmelidir. Ürün numarası (ProductID) 1 olan kaydı (Single) “Product” tipindeki ürün nesnesine verilmiştir. Sonuçta elde edilen ürünün ismi (ProductName) “Chains1” olarak yeniden düzenlenmiş ve yapılan güncelleme işlemi “SubmitChanges()” metodu ile context nesnesi aracılığı ile veri tabanına uygulatılmıştır.


“DataContext” nesnesi üzerinde yapılan ve veri tabanına güncellenmemiş değişiklikleri eski haline getirmek için “Refresh()” metodunu aşağıda verildiği şekilde kullanabilirsiniz.


Veri Ekleme ve Silme             
                                                                             
             DLINQ ile varlık koleksiyonu üzerine yeni bir öge ekleyebilir veya çıkarabilirsiniz. Yeni bir öge eklemek için ilgili koleksiyonun “InsertOnSubmit()” metodu çıkarmak için “Remove()” metodu kullanılır.

Örnek:

“Oruvar Exp” adında yeni bir nakliyeci kaydı yapınız.



Eklenecek olan kayıt ait olacağı varlığın tipinde bir örneği “new” yapıcısı ile oluşturulur. Varlık nesnesine ait özelliklere (property) yeni kayıt bilgileri verilir. İlgili varlık koleksiyonunun “InsertOnSubmit()” metoduna parametre verilmek suretiyle ekleme işlemi gerçekleştirilir.


Örnek: “Oruvar Exp” adındaki nakliyecinin kaydınız siliniz.


Öncelikle silinecek kayıt varlık setinden LINQ sorgusu ile elde edilir. İlgili varlık koleksiyonunun “DeleteOnSubmit()” metoduna parametre olarak verilmek suretiyle silme işlemi gerçekleştirilir.


Ekleme ve silme işlemlerinin ardından “SubmitChanges()” metodu “context” nesnesine uygulanarak değişiklikler veri tabanına uygulatılır.



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.