Herkese merhaba,
Uzun zamandır sınavlardan dolayı yazamamıştım.Dönem arası tatile girer girmez fırsat bu fırsat deyip uzun zamandır merak ettiğim “Validation” konusunu araştırma fırsatım oldu ve bu konudaki öğrendiklerimi şimdi sizinle paylaşacağım:) Öncelikle nedir bu “Validation” derseniz kelime anlamı olarak “doğrulama” anlamına geliyor. Örneğin; bir textbox’a veri giriyorsunuz ama bu veri istenilen formatta mı değil mi bunun kontrol etmeniz gerekiyor. Daha da somut bir örnek vereyim. Cep telefonu numaranızı yazacağınız bir bölüme siz karakter girerseniz normalde sistemin bunu algılayıp sizi uyarması gerekir. İşte bu noktada validation devreye giriyor Vakit kaybetmeden anlatmaya başlıyayım.
Öncelikle hemen bir yeni silverligt 4.0 projesi oluşturuyoruz.(Ben “Ders-1” adında oluşturdum.) Sonrasında aşağıdaki gibi ekranımızı oluşturuyoruz (labelları, textboxları ve butonu yerleştiriyoruz.)
[xaml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="Ders_1.MainPage" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400" Width="Auto" Height="Auto" MinWidth="640" MinHeight="480"> <Grid x:Name="LayoutRoot" Background="White"> <StackPanel x:Name="stack_sol" HorizontalAlignment="Center" Width="82" Margin="157,65,360,195"> <sdk:Label x:Name="lbl_isim" HorizontalAlignment="Left" Content="İsim:" Height="30"/> <sdk:Label x:Name="lbl_soyisim" HorizontalAlignment="Left" Content="Soyisim:" Height="30"/> <sdk:Label x:Name="lbl_dogumtarihi" Content="Doğum Tarihi:" Height="30"/> <sdk:Label x:Name="lbl_dogumyeri" Content="Doğum Yeri:" Height="30"/> <sdk:Label x:Name="lbl_okul" Content="Okul:" Height="30"/> <sdk:Label x:Name="lbl_bolum" Content="Bölüm:" Height="30"/> <sdk:Label x:Name="lbl_telefon" Content="Telefon:" Height="30"/> </StackPanel> <sdk:Label x:Name="lbl_ust" VerticalAlignment="Top" Content="Kullanici Kaydina Hoşgeldiniz" FontSize="18.667" HorizontalAlignment="Center"/> <StackPanel x:Name="stack_sag" d:LayoutOverrides="VerticalAlignment" Margin="264,65,176,195" Width="200"> <TextBox x:Name="txt_isim" TextWrapping="Wrap" Height="30"/> <TextBox x:Name="txt_soyisim" TextWrapping="Wrap" Height="30"/> <sdk:DatePicker Name="dogumtarihi" Height="30"/> <TextBox x:Name="txt_dogumyeri" TextWrapping="Wrap" Height="30"/> <TextBox x:Name="txt_okul" TextWrapping="Wrap" Height="30"/> <TextBox x:Name="txt_bolum" TextWrapping="Wrap" Height="30" /> <TextBox x:Name="txt_telefon" TextWrapping="Wrap" Height="30" /> </StackPanel> <Button x:Name="btn_kaydet" Content="Kaydet" VerticalAlignment="Top" Margin="220,301,210,0" Height="30" /> </Grid> </UserControl> |
Daha sonra projemizin üzerine gelip mouse’un sağ tuşuna tıklayıp Add->New Item->Class’ ı seçiyoruz.
Class’ımızın adını “Kullanici” olarak yazdıktan sonra açılan class dosyamızın içerisini aşağıdaki gibi dolduruyoruz.
[C#]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace Ders_1 { public class Kullanici { private string _isim; private string _soyisim; private string _dogumyeri; private string _okul; private string _bolum; private string _telefon; public string isim { get { return _isim; } set { foreach (int karakter in value) { if (karakter >= 48 && karakter <= 57) { throw new Exception("İsmin içerisinde rakam geçemez."); } } _isim = value; } } public string soyisim { get { return _soyisim; } set { foreach (int karakter in value) { if (karakter >= 48 && karakter <= 57) { throw new Exception("Soyismin içerisinde rakam geçemez."); } } _soyisim = value; } } public string dogumyeri { get { return _dogumyeri; } set { foreach (int karakter in value) { if (karakter >= 48 && karakter <= 57) { throw new Exception("Doğumyerinin içerisinde rakam geçemez."); } } _dogumyeri = value; } } public string okul { get { return _okul; } set { foreach (int karakter in value) { if (karakter >= 48 && karakter <= 57) { throw new Exception("Okul adının içerisinde rakam geçemez."); } } _okul = value; } } public string bolum { get { return _bolum; } set { foreach (int karakter in value) { if (karakter >= 48 && karakter <= 57) { throw new Exception("Bölüm adının içerisinde rakam geçemez."); } } _bolum = value; } } public string telefon { get { return _telefon; } set { foreach (int karakter in value) { if (karakter <= 48 || karakter >= 57) { throw new Exception("Rakam dışında bir şey giremezsiniz."); } } _telefon = value; } } } } |
Yukarıdaki kodlar aracılığıyla doğum tarihi dışındaki tüm verileri kontrol ediyoruz. Buraya kadar her şeyi yaptıysanız şimdi sıra MainPage.xaml.cs’de. Şimdi bu doaymızı açıyoruz ve Kullanci sınıfından bir nesne türetiyoruz.
[C#]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace Ders_1 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); Kullanici kullanici = new Kullanici(); LayoutRoot.DataContext = kullanici; } |
Bunu da yaptıysak sıra geldi MainPage.xaml dosyamıza “ValidatesOnExceptions” bölümlerini eklemeye. Bu sayede uyarılarımızı çalıştırabileceğiz.
[xaml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="Ders_1.MainPage" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400" Width="Auto" Height="Auto" MinWidth="640" MinHeight="480"> <Grid x:Name="LayoutRoot" Background="White"> <StackPanel x:Name="stack_sol" HorizontalAlignment="Center" Width="82" Margin="157,65,360,195"> <sdk:Label x:Name="lbl_isim" HorizontalAlignment="Left" Content="İsim:" Height="30"/> <sdk:Label x:Name="lbl_soyisim" HorizontalAlignment="Left" Content="Soyisim:" Height="30"/> <sdk:Label x:Name="lbl_dogumtarihi" Content="Doğum Tarihi:" Height="30"/> <sdk:Label x:Name="lbl_dogumyeri" Content="Doğum Yeri:" Height="30"/> <sdk:Label x:Name="lbl_okul" Content="Okul:" Height="30"/> <sdk:Label x:Name="lbl_bolum" Content="Bölüm:" Height="30"/> <sdk:Label x:Name="lbl_telefon" Content="Telefon:" Height="30"/> </StackPanel> <sdk:Label x:Name="lbl_ust" VerticalAlignment="Top" Content="Kullanici Kaydina Hoşgeldiniz" FontSize="18.667" HorizontalAlignment="Center"/> <StackPanel x:Name="stack_sag" d:LayoutOverrides="VerticalAlignment" Margin="264,65,176,195" Width="200"> <TextBox x:Name="txt_isim" TextWrapping="Wrap" Height="30" Text="{Binding isim,Mode=TwoWay,ValidatesOnExceptions=True}"/> <TextBox x:Name="txt_soyisim" TextWrapping="Wrap" Height="30" Text="{Binding soyisim,Mode=TwoWay,ValidatesOnExceptions=True}"/> <sdk:DatePicker Name="dogumtarihi" Height="30"/> <TextBox x:Name="txt_dogumyeri" TextWrapping="Wrap" Height="30" Text="{Binding dogumyeri,Mode=TwoWay,ValidatesOnExceptions=True}"/> <TextBox x:Name="txt_okul" TextWrapping="Wrap" Height="30" Text="{Binding okul,Mode=TwoWay,ValidatesOnExceptions=True}"/> <TextBox x:Name="txt_bolum" TextWrapping="Wrap" Height="30" Text="{Binding bolum,Mode=TwoWay,ValidatesOnExceptions=True}"/> <TextBox x:Name="txt_telefon" TextWrapping="Wrap" Height="30" Text="{Binding telefon,Mode=TwoWay,ValidatesOnExceptions=True}"/> </StackPanel> <Button x:Name="btn_kaydet" Content="Kaydet" VerticalAlignment="Top" Margin="220,301,210,0" Height="30" HorizontalAlignment="Center" Width="188" /> </Grid> </UserControl> |
Artık uygulamamızın çalışır halini görebiliriz.
Ekran görüntülerimiz bu şekilde.
Bir sonraki makalemde Hata olan textbox’ın rengini değiştirip tüm hataların bir ValidationSummary içerisinde listelenmesi konusunda olacak…
Kendinize iyi bakın, bir sonraki makalemde görüşmek üzere…