Makale Özeti

Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen Silverlight UIElementlerin birbirine nasıl bağlandığını inceliyor olacağız.

Makale

Silverlight 3 beta ile birlikte kontrolleri ve özelliklerini birbirine bağlayabiliyoruz. WPF içerisinde bu özellik olmasına rağmen Silverlight için yepyeni bir özelliktir. Bu özellik ile birlikte eventler arasında dolaşıp kod yazmadan kontrolleri ve özelliklerini birbirine bağlayabileceğiz.

Örneğin, ComoBox’dan seçim yapıldığında seçilen değeri TextBlock kontrolünün Text özelliğine bağlayabiliriz. Geriye gidip daha önce bu işi nasıl yaptığımızı hatırlayalım.

Yeni bir Silverlight projesi oluşturalım. Formumuza bir ComboBox ve bir tane de TextBlock kontrolü ekleyelim.

[XAML]

<UserControl x:Class="Silverlight3ElementToElement.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" >
<TextBlock x:Name="tbTakim" Width="150" Canvas.Left="15" Canvas.Top="10"></TextBlock>
<ComboBox x:Name="cmbTakimlar" Width="150" Canvas.Top="30" Canvas.Left="10">
</ComboBox>
</Canvas>
</
UserControl>

ComboBox’dan bir seçim yaptığımızda çalışan SelectionChanged isimli bir event var. Bu event de ComboBox’dan seçtiğimiz değeri TextBlock’un Text özelliğine atayabiliriz. İlk olarak UserControl için Loaded Event Listener’ini oluşturup ComboBox’a eleman ekleyelim. Daha sonra da atama işlemini yapacağomız SelectionChanged event listenerini oluşturalım.

[C#]

public MainPage()
{
InitializeComponent();
// Event Listenerları oluşturalım.
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
cmbTakimlar.SelectionChanged += new SelectionChangedEventHandler(cmbTakimlar_SelectionChanged);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
// Listbox’a eleman ekliyelim
cmbTakimlar.Items.Add("Fenerbahçe");
cmbTakimlar.Items.Add("Galatasaray");
cmbTakimlar.Items.Add("Beşiktaş");
cmbTakimlar.Items.Add("Trabzon Spor");
}

void cmbTakimlar_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Atama işlemini yapalım.
tbTakim.Text = cmbTakimlar.SelectedItem.ToString();
}

Eskiden bu şekilde kod yazarak kontrolleri ve özelliklerini birbirine bağlayabiliyorduk. Silverlight 3 Beta ile birlikte artık kontrolleri birbirine bağlamak çok daha kolay.

[Kullanımı]

 <UIElement Text="{Binding BağlanacakÖzellik, ElementName=BağlanacakKontrol}"></UIElement >

Şimdi yukarıda event listener ile yaptığımız bağlama işlemini Silverlight 3 Beta ile gelen yeni özellik ile yapalım.

[XAML]

<UserControl x:Class="Silverlight3ElementToElement.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" >
// TextBlock kontrolünün Text özelliği ile ComoBox kontrolünün SelectedItem özelliğini birbirine bağladık. ComboBox’ın SelectedItem özelliği ne ise TextBlock kontrolünün Text özelliği de o olacak.
<TextBlock x:Name="tbTakim" Width="150" Canvas.Left="15" Canvas.Top="10" Text="{Binding SelectedItem, ElementName=cmbTakimlar}"></TextBlock>
<ComboBox x:Name="cmbTakimlar" Width="150" Canvas.Top="30" Canvas.Left="10">
</ComboBox>
</Canvas>
</
UserControl>

Resim 1

Hiç kod yazmadan kontrolleri birbirine bağladık :) 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