- Katılım
- 3 Şubat 2014
- Mesajlar
- 1,744
- Tepkime puanı
- 0
- Puanları
- 0
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); |