Programlamaya yeni baslarken genelde ilk olarak console application, sonra form application daha sonra da web application seklinde uygulamalari tanimaya ve gelistirmeye baslariz. Bildiginiz gibi WPF uygulamalarida windows uygulamalarinin bir diger çesidi hatta yeni nesil form uygulamalari demistik. Bu makalemizde istedim ki windows uygulamalarinda yaptigimiz gibi bir notePad projesi yapalim ve bakalim nasil bir sey ortaya çikacak hep birlikte görelim.
Tabi önce editorumuz içerisinde kullanacagimiz bazi kontrollerden söz edelim. Her notePad uygulamasinda oldugu gibi bir menümüz olacak. Bunun için item controllerden yararlanacagiz.
WPF’de item controlleri kullanirken iki islem gerçeklestiriyoruz. Ilki xaml tarafinda nesnelerimizin item özelligine deger atamak, ikincisi ise kod tarafinda databind ile nesnemize verileri doldurmak.
Sik kullanilan item controller’den bazilari ContextMenu ile MenuItem’dir. Bizde örnegimizde MenuItem’dan yararlanacagimiz için bir giris yapalim.
Kullanilan bir kontrole iliskin özel menü olusturulmak istendiginde ContextMenu’den yararlaniyoruz. Örnegin, textBox nesnemizin ContextMenu özelliginden yararlanarak asagidaki gibi bir MenuItemlarini gösterelim.

Uygulamamizi çalistiralim.

Gördügünüz gibi textBox içerisindeki metinle ilgili islem yapmak için bazi item’lar olusturduk. Fakat herhangi bir islem yapmayacaktir, çünkü bildiginiz gibi henüz databind islemini ve kod kisminda gerekli komutlarimizi yazmadik. Bu kismi editörümüzü yazarken görecegimiz için örnekte sadece contextMenu ve MenuItem mantigi gösterilmektedir.
Tab Controller
Tek bir form üzerinde birden fazla ekran göstermek için oldukça yararli olabilecek bir kontroldür. Ya da Windows Form uygulamalarinda adim adim bir islem yaptirmak istediginizde de oldukça basarili bir uygulama olacaktir. Sonrasinda ise adim adim islemleri yapmis oldugunuz form kontrollerinin içerisinde yer alan degerleri DataBinding yardimi ile diger kontrollerdeki degerler ile birlestirerek istediginiz islemleri yapabilmeniz mümkündür.
Toolbar
Son kullaniciya resimli olarak araç kutusu göstermeye olanak tanimaktadir. Örnegin kaydetme islemine yarayan bir disket resmi gibi. Hemen bir örnekle açikliga kavusturalim.


Artik projemize geçebiliriz.
Öncelikle Wpf Application seçerek yeni bir proje olusturalim ve isim olarak WpfTextEditor verelim.
Projemizin MainWindow.xaml dosyasina bir tane DockPanel ekleyelim. Sonra asagidaki gibi kodlarimizi yazalim.

Gördügünüz gibi editörümüze menuItem nesnelerini yerlestirdik.

Simdi de Menumüzden sonra DockPanel içerisinde uygun bir alana Status Bar ekleyelim.

Gördügünüz gibi textBox nesnemize bind ettik ve path’i textBox’imizin uzunluguna bagladik ki bize girelen karakter adedini gösterebilsin.
Simdi de design kismina göz atalim. Bakalim ne gibi bir degisiklik oldu.

Dikkat ederseniz StatusBar eklenmis, ve text içerisine girilen karakter sayisini bize bildiriyor.
Simdi de bir toolbar ekleyelim. Öncelikle ToolBarTray nesnemizi ardindan ise Toolbar’i menumüzün alt kismina gelecek sekilde yerlestiriyoruz.

Hemen ne yaptik bir bakalim. Toolbar nesnemizi ToolbarTray içerisine ve DockPanelin en üst kismina yerlestirdik.
Copy islemi için bir button nesnesi olusturduk hemen ardinda da menuye ait item’lari görüntüleyecek bir checkBox nesnesi yerlestirdik. Uygulamamizin ekran görüntüsü asagidaki gibidir.

Simdi de menu içerisine ekledigimiz item’larin islevlerini belirtelim.

Projemizin kod kismina gidelim ve Custom Kontrollerimizi yazalim. Exit ve WordWrap için asagidaki gibi kodlarimizi MainWindow.cs dosyasina ekliyoruz.


Simdi .xaml tarafinda son bir kaç islemi yapmadan önce projemizi derleyelim. Sonra da asagidaki gibi gerekli degisikligi yapalim.

Editörümüz hazir, evet isterseniz editörümüze bir de logo ekleyelim. Asagidaki gibi Window penceresinin properties özelliklerinde Icon’i bulup logomuzun path’ini ekliyoruz.

Tamamdir. Uygulamamizi derleyip çalistirdigimizda asagidaki gibi bir ekran görüntüsü ile karsilasiriz.

Hiç fena degil, elbette çok daha fazla özellik eklenerek special bir ürün olusturulabilir. :)
Projeye ait kaynak kodlarini buradan indirebilirsiniz.
Herkese iyi çalismalar...