Silverlight 2.0 içerisinde ProgressBar kullanımı - Makale - Yazılım Dilleri
Standart bir ProgressBar'ı yukarıdaki XAML kodu ile uygulamanıza ekleyebilirsiniz. Aslında Silverlight içerisinde ProgressBar'ın Winforms'daki muadilinden ilk bakışta pek bir farkı yok. ProgressBar'ın Value özelliği o anki değeri, Maximum özelliği ise alabileceği en yüksek değeri tanımlıyor.
Gelin ufak bir örnek yapmak için bir DispatcherTimer kullanalım. Timer'ımızın iki saniyede bir ProgressBar'ı biraz ilerletsin. Böylece işlem yapılıyormuş gibi ProgressBar'ı izleyebilelim.
WithEvents Timer As New System.Windows.Threading.DispatcherTimer
Progress.Maximum = 20
Timer.Interval = New TimeSpan(0, 0, 2)
Yukarıdaki kod ile Progress adındaki ProgressBar'ımızı oynattığımızda aşağıdaki görüntü ile karşılaşıyoruz.
ProgressBar iş başında.
Eğer gerçekten yapılacak işlemin ne kadar süreceği bilmiyorsanız ve bir şekilde bu bilgiyi kullanıcıya gösterme şansınız yoksa bu sefer de işlemin sürdüğüne dair bir gösterge olarak ProgressBar'ı kullanmak için IsIndeterminate özelliğini True olarak ayarlayabilirsiniz.
Böyle bir durumda ProgressBar içerisinde sürekli olarak aynı animasyon çalıştırılacaktır.
ProgressBar sonsuz döngüde!
ProgressBar'ın görselliğini değiştirmek için Foreground ve Background özelliklerinden faydalanabilirsiniz. Foreground özelliği ProgressBar içerisinde dolu kısımları etkilerken Background ise ProgressBar'ın boş olan kısımlarını etkileyecektir.
Örneğin yukarıdaki kod ile aşağıdaki şekilde bir ProgressBar'ın fonuna bir fotoğraf yerleştirebilirsiniz. Hatta Background için bir ImageBrush yerine VideoBrush kullanarak farklı uygulamalar da oluşturulabilir. Burada özellikle Indeterminate ile ilgili dikkat etmek gerek. Indeterminate aktif hale geldiğinde Silverlight içerisinde ProgressBar'ın ForeGround'u ile tüm kontrol kaplanıyor ve üzerinden beyaz dikey Gradient'lar animasyon ile geçiriliyor. Bu sistem ancak ProgressBar'ın ControlTemplate'i özelleştirilebilirse değiştirilebiliyor aksi halde tüm standart ProgressBar kontrolleri bu şekilde çalışıyor.