Makale Özeti

Wpf'te kendi mesaj kutusunu oluşturma isimli bu makalede Wpf'te nasıl mesaj kutusu oluşturulacağını inceleyeceğiz.

Makale

Kullanıcılar uygulamalarda bir işlem yaparken tedirgin olabilirler, ya da farkına varmadan yanlış bir işlem yapabilirler. Bu nedenle
gerek Win32 gerekse Web Applicationlarda kullanıcıya uyarı vermek, bilgilendirmek, onay almak için mesaj kutusu kullanırız.
Şimdi size Wpf projesinde nasıl kendi mesaj kutumuzu oluşturacağımızı anlatmaya çalışacağım. MessageBox kontrolümüzün
xaml tarafını incelemeye çalışalım.

XAML

Border Kontrolü:
Mesaj kutumuzun görselliğini artırmak için en dışa border kontrolünü koyduk. BorderThickness, BorderBrush ve CornerRadius
propertilerini set ettik. CornerRadius propertisi sayesinde mesaj kutumuzu dış çevresi oval şekilde görünür hale geldi.

Grid Layout Kullanımı:
Htmldeki table'a tekabül eden Wpf Grid kontrolle 3 tane satır ve 2 sütundan oluşan bir tane window yaptık. 1. ve 3. satırların Height
propertisini, içine koyacağımız kontrollerin boyu kadar yer kaplaması için “Auto” değerine set ettik. 2. Satırın Height propertisini
ise kalan alanı kaplaması için “*” değerine set ettik. Aynı şekilde ilk sütunun Width propertisini içine koyacağımız kontrolün
genişliği kadar yer kaplaması için “Auto” ve 2. Sütunun Width propertisini ise kalan alanı kaplaması için de “*” değerine set ettik.

Image,TextBlock,Button Kullanımı:
Grid layout kontrolünün ilk satırındaki 2 kolonu birleştirip içine bir tane textblock (label gibi düşünebilirsiniz bu kontrolü) kontrolü
koyduk. Bu kontrolü mesaj kutumuzun başlık yazısını göstermek için kullanacağız. Grid layout kontrolünün 2. satırın ilk sütununa
image kontrolü, diğer sütununa da mesaj kutumuzdaki uyarıyı göstermede kullanacağmız textblock kontrolünü koyduk. Image kontrolün
bulduğu boşluğun hepsine yayılmaması için strech propertisini "none" yaptık. TextBlock kontrolünün Text propertisine set edilen yazının
taşmasını önlemek ve taşan değerin alt satıra geçmesini sağlamak için kontrolün TextWrapping propertisini “Wrap” değerine set ettik.
2. satırın 2. kolonuna koyduğumuz textblock kontrolünün sağdan, soldan, yukarıdan ve aşağıdan ne kadar uzakta olacağını belirlemek içinse
Margin propertisini kullandık. Yazıların dikeyde eksende ortada görüneceğini VerticalAlignment propertisiyle belirledik. 3. satırda da
2 kolonu birleştirip içine bir tane stackpanel layout kontrolü koyduk. Stackpanel layout kontrolünün içine ise 4 tane buton yerleştirdik.
Neden 4 tane butonu stackpanel kontrolünün içine koyduğumuzu düşünebilirsiniz. Butonların görünürlüklerini değiştirdiğimizde, visible propertisi
true olan butonların mesaj kutusunun ortasında görünmesi için stackpanel layout kontrolünün içine yerleştirdik. Tabiki bunu sağlayabilmemiz
için de stackpanel layout kontrolünün HorizontalAlignment propertisini “Center” değerine atadık.

C#
Kontrolümüzün xaml tarafını anlatmaya çalıştık. Şimdi .cs tarafındaki kodlara bir göz atalım.
Mesaj kutumuzu ekranda gösterebilmek için static show metodunu kullanıyoruz. Bu metod içinde global değişken olan MessageBox tipinde
messageBox adında bir tane nesne yarattık.
messageBox.txtMsg.Text = text; ile göstereceğimiz mesajı belirliyoruz.
messageBox.MessageTitle.Text = caption; ile de göstereceğimiz mesajın başlığını belirliyoruz.

Enumlarımız üstte gösterildiği gibi.

setVisibilityOfButtons fonksiyonu ile de MessageBoxButton enum değerine göre hangi butonların görüneceğeni belirledik. Burada önemli
olan nokta ise visibility propertisinin değerine Visibility.Collapsed değerini atmış olmamız. Bu değer sayesinde butonlar görünmez
oluyor ve onların kapladığı yeri visibilitisi true olan butonlar alıyor. Eğer visibility propertisine Visibility.Hidden değerini set
etmiş olsaydık, bu butonlar görünmeyecekti ama kapladığı yer de dolu olacaktı. Farkını anlamak için Visibility.Collapsed yerine
Visibility. Hidden set edebiilrsiniz.

setImageOfMessageBox fonksiyonu sayesinde hangi resmin görüneceğini belirlerdik. Bunun için de setImage fonksiyonunu kullandık.

setImage fonksiyonuna geçtiğimiz imageName değişkeni ile Images klasörü altındaki resimlerden birini oluşturup img isimli Image nesnesinin
Source propertisine BitmapImage nesnesi oluşturup set ettik.

Button_Click eventi ile MessageBoxResult propertisini set ettik ve mesaj kutumuzun kapanmasını sağladık.

Show Metodlarımızı aşağıdaki genişletebiliriz


Örnek Kullanım:

WpfMessageBox .Show("Bilgilerdirme", "Bilgi paylaştıkça büyür.", MessageBoxButton.OK, MessageBoxImage.Information);

MessageBoxResult result = WpfMessageBox .Show("Soru", "Makaleyi faydalı buldunuz mu?", MessageBoxButton.YesNo, MessageBoxImage.Question);

WpfMessageBox .Show("*******************************Oldukça uzun bir şeyler yazıp, yazdıklarımızın alt satıra düşüp düşmediğini görmek
için karalıyorum bu satırları.*******************************" , MessageBoxType.Error);




Bu makalemizde, uygulamalardaki uyarı ve bilgilendirme işlemlerini gerçekleştirmek için kullanılan mesaj kutusu mekanizmasını Wpf'te nasıl
oluşturacağımızı anlattık. Dilerim faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere...


Sezgin Zeka

WpfMessageBox