Makale Özeti

Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen SaveFileDialog kullanımı inceleyeceğiz.

Makale

Silverlight 3 Beta ile birlikte gelen SaveFileDialog nesnesi Silverlight uygulamasındaki bir dosyayı istemci kullanıcının makinesine kaydetmemizi sağlar. Hatırlatmak da fayda var, Silverlight 2.0 ile birlikte de OpenFileDialog kontrolü Silverlight kontrol kütüphanesine eklenmişti. Bu kontrolle de istemcinin makinesindeki bir dosyayı Silverlight uygulaması içinde kullanabiliyoruz. Şöyle bir şey yapabiliriz artık, OpenFileDialog ile bir dosyayı alıp üzerinde değişiklik yapıp, SaveFileDialog kontrolü ile de kaydedebiliriz. SaveFileDialog kontrolünün bazı önemli özelliklerini inceleyecek olursak;
Filter özelliği ile SaveFileDialog ile kaydedilecek dosyanın uzantısını yada uzantılarını bu özellikle belirleyebiliri

FilterIndex özelliği ile filtreler içinde bulunan seçeneklerden hangisinin seçileceğini belirleriz.

DefaultExt özelliği ile herhangi bir filter seçmezsek DefaultExt özelliği ile belirttiğimiz uzantıyı alır

ShowDialog metodu ile SaveFileDialogu ekranda gösterebiliyoruz. Geriye Boolen bir değer döndürür.

Silverlight uygulamasında kullanıcıların Text dosyalarını açıp bu dosyalar üzerinde değişiklik yapıp kaydetmesini sağlayacak bir uygulama geliştirelim. Böylece hem OpenFileDialog hemde SavaFileDialog nesnelerini incelemiş olacağız. Bunun için Silverlight projesi oluşturalım. Projemize aç, kaydet için iki buton ve dosyadaki içeriği görüntülemek içinde bir textbox ekleyelim.

Resim 1

[XAML]

<UserControl x:Class="SL3BetaSaveFileDialogKontrolu.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300">
     <Canvas x:Name="LayoutRoot" Background="White">
          <Button x:Name="btnAc" Content="Aç" Width="100" Height="30" Canvas.Top="10" Canvas.Left="10"></Button>
          <
Button x:Name="btnKaydet" Content="Kaydet" Width="100" Height="30" Canvas.Left="120" Canvas.Top="10"></Button>
          <TextBox x:Name="txtIcerik" Text="İçerik" Width="380" Height="240" Canvas.Left="10" Canvas.Top="50"></TextBox>
     </Canvas>
</
UserControl>

İlk olarak dosyayı OpenFileDialog nesnesini kullanarak açalım ve textbox kontrolün de gösterelim.

[OpenFileDialog]
void btnAc_Click(object sender, RoutedEventArgs e)
{
     OpenFileDialog dosyaAc = new OpenFileDialog(); // OpenFileDialog nesnesi oluşturalım.
    
dosyaAc.Multiselect = false; // Çoklu seçime izin vermeyelim.
    
dosyaAc.Filter = "Text Dosyaları(*.txt)|*.txt"; // Açılacak olan dosyanın uzantısı
     if (dosyaAc.ShowDialog() == true) // Bir dosya seçilmezse yada iptal’e basılırsa hata vermemesi için kontrolümüzü yapalım
    
{
          string contents = "";
         
StreamReader reader = new StreamReader(dosyaAc.File.OpenRead(), System.Text.Encoding.UTF8); // OpenFileDialog nesnesi ile açılan dosyayı StreamReader ile okuyalım.
         
while (!reader.EndOfStream) // Okunan dosya sona geldimi
         
{
               contents = reader.ReadToEnd();// Sonuna kadar oku
         
}
          txtIcerik.Text = contents; // Okunan dosyanın içeriğini textbox’a ata.
         
reader.Close(); // Okuyucuyla işimiz bitti kapatalım.
    
}
}


Şimdide kullanıcının dosyayı SaveFileDialog nesnesi kullanarak kaydetmesini sağlayalım.

[SaveFileDialog]
void btnKaydet_Click(object sender, RoutedEventArgs e)
{
    SaveFileDialog dosyaKaydet = new SaveFileDialog(); //SaveFileDialog nesnesi oluşturalım.
  
dosyaKaydet.Filter = "Text Dosyası(txt)|*.txt"; // Kaydedilecek dosya sadece txt dosya olabilisin.
   if (dosyaKaydet.ShowDialog() == true)
   {
      StreamWriter writer = new StreamWriter(dosyaKaydet.OpenFile());//Seçilen dosyayı StreamWriter ile açalım…
     
writer.Write(txtIcerik.Text); // Seçilen dosyaya içeriği atayalım.
     
writer.Close(); // Yazıcıyı kapatmayı unutmayalım.
  
}
}

Bir dosya açalım ve dosyayı kaydedelim. Eğer dosya yoksa direk de kaydedebiliriz

Resim 2

Dosyayı kaydetmeye çalışalım. Masaüstüne kaydedelim,

Resim 3

Şimdi Masaüstüne bakalım,

Resim 4

Masaüstüne dosya kaydedilmiş, Dosyanın içine bakalım,

Resim 5

Bu makalenin de sonuna geldik başka bir makale de görüşmek üzere. Silverlight ile kalın ;)

Sem GÖKSU
www.semgoksu.com  | www.yazilimgunlugu.com 
sem.goksu@yazilimgunlugu.com 

Kaynaklar
msdn.com
silverlight.net