Silverlight 2.0 Beta 1 içerisinde ToggleButton kullanımı

0 dakikada yazıldı

7406 defa okundu

Düzenle

Checkbox ve RadioButton kontrolleri neredeyse her projede en az bir defa
kullandığımız kontroller arasında yerlerini alırlar. Bu kontroller gibi
farklı kontroller oluşturarak kullanıcıyı bir durumdan haberdar etmek
veya kullanıcının bir durumu değiştirmesini sağlamak mümkün olabilir.
Örneğin basit bir video oynatıcısı uygulamasında "Play" düğmesi ile
"Pause" düğmesini aynı düğme içerisinde kullanabilirsiniz. Söz konusu
düğme kendi içinde değişerek her tıklandığında "Play" veya "Pause"
şeklinde üzerindeki yazıyı değiştirir ve videonun da durdurulmasını veya
oynatılmasını sağlar. Checkbox veya RadioButton düğmeleri gibi
bu gibi kontrollere özünde "ToggleButton" denir ve Silverlight 2
Beta 1
içerisinde Checkbox ve RadioButton da zaten hali
hazırda adı ToggleButton olan bir kontrol yapısından türetilmiştir.
Bu yazımızda ToggleButton kontrolünün detaylarına ve kullanımına
değineceğiz.

<UserControl
x:Class="SilverlightApplication21.Page"

    xmlns="http://schemas.microsoft.com/client/2007"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="400" Height="300">

  <Grid
x:Name="LayoutRoot"
Background="White">

    <ToggleButton Margin="104,109,177,138"
Content="ToggleButton"
x:Name="ToggleDugme"/>

  </Grid>

</UserControl>

Yukarıdaki şekli ile standart bir ToggleButton kontrolünü ister
Blend ister Visual Studio içerisinde uygulamanıza yerleştirebilirsiniz.
Sonrasında arkaplanda ToggleButton kontrolünün yakalayabileceğimiz
iki kendine özel event'ı var; bunlardan ilki Checked, diğeri ise
Unchecked durumları. Yarattığımız ToggleButton'ın görsel
özelliklerine değinmeden önce hemen bu event'lar ile neler
yapabileceğimize bir göz atalım.

[VB]

Private Sub ToggleDugme_Checked(ByVal sender As Object,
ByVal e As System.Windows.RoutedEventArgs) Handles ToggleDugme.Checked

    ToggleDugme.Content = "İşaretli"

End Sub

 

Private Sub ToggleDugme_Unchecked(ByVal sender As Object,
ByVal e As System.Windows.RoutedEventArgs) Handles ToggleDugme.Unchecked

    ToggleDugme.Content = "İşaretsiz"

End Sub

[C#]

private void ToggleDugme_Checked(object sender,
System.Windows.RoutedEventArgs e)

{

    ToggleDugme.Content = "İşaretli";

}

 

private void ToggleDugme_Unchecked(object sender,
System.Windows.RoutedEventArgs e)

{

    ToggleDugme.Content = "İşaretsiz";

}

Basit bir şekilde ToggleButton kontrolümüzün içerisine yazılı metni
değiştirdiğimiz örneğimizi çalıştırdığımızda artık Button
görünümündeki ToggleButton kontrolüne her bastığımızda içinde duruma
göre "İşaretli" veya "İşaretsiz" yazacak. Ayrıca isterseniz ToggleButton
kontrolüne ait IsChecked özelliğini de kullanarak ToggleButton'un o
anki durumundan haberdar olabilirsiniz.

Belirsiz durumlara özel...

Bazı durumlarda sadece iki seçenek yetmez ve "belirsizlik" seçimi de
yapmak gerekebilir. Bu durumda kullanıcıya sadece Evet veya Hayır
şeklinde cevap vermenin yanı sıra isterse "Bilmiyorum" gibi bir seçeneğe
de yönelebilir. ToggleButton içerisinde böyle bir yapı da var. Eğer
bir ToggleButton'un IsThreeState özelliğini True olarak
ayarlarsanız artık iki değil üç seçenekli bir ToggleButton sahibi olmuş
oluyorsunuz. Peki bu üçüncü seçeneği kod tarafında nasıl yakalıyoruz?

[VB]

Private Sub ToggleDugme_Checked(ByVal sender As Object,
ByVal e As System.Windows.RoutedEventArgs) Handles ToggleDugme.Checked

    ToggleDugme.Content = "İşaretli"

End Sub

 

Private Sub ToggleDugme_Indeterminate(ByVal sender As Object,
ByVal e As System.Windows.RoutedEventArgs) Handles ToggleDugme.Indeterminate

    ToggleDugme.Content = "Belirsiz"

End Sub

 

Private Sub ToggleDugme_Unchecked(ByVal sender As Object,
ByVal e As System.Windows.RoutedEventArgs) Handles ToggleDugme.Unchecked

    ToggleDugme.Content = "İşaretsiz"

End Sub

[C#]

private void ToggleDugme_Checked(object sender,
System.Windows.RoutedEventArgs e)

{

    ToggleDugme.Content = "İşaretli";

}

 

private void ToggleDugme_Indeterminate(object sender,
System.Windows.RoutedEventArgs e)

{

    ToggleDugme.Content = "Belirsiz";

}

 

private void ToggleDugme_Unchecked(object sender,
System.Windows.RoutedEventArgs e)

{

    ToggleDugme.Content = "İşaretsiz";

}

Gördüğünüz gibi ToggleButton'un ayrıca bir de Indeterminate adında
bir event-handler'ı bulunuyor. Söz konusu durumu yakalayarak belirsizlik
halinde de gerekli işlemlerin yapılmasını sağlayabilirsiniz. Böyle bir
durumda IsChecked özelliği geriye null / nothing döndürecektir.

Unutmayın ki herhangi bir kontrolün Content özelliği aslında
içerisine farklı Silverlight kontrolleri de alabilir hatta kontrollerin
görsel yapısının tamamen değiştirebilirsiniz. Silverlight 2 Beta 1
içerisinde Control
Templating

ile ilgili yazıyı inceleyerek ToggleButton için de aynı teknikleri
uygulayabilirsiniz.

Hepinize kolay gelsin.