Silverlight 3 Beta ile birlikte gelen
SaveFileDialog ile 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.
[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
Dosyayı kaydetmeye çalışalım. Masaüstüne
kaydedelim,
Şimdi Masaüstüne bakalım,
Masaüstüne dosya kaydedilmiş, Dosyanın içine
bakalım,
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