Silverlight 3 Beta – Kontrollerin Birbirine Bağlanması
<span style="LINE-HEIGHT: 115%">Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen Silverlight UIElementlerin birbirine nasıl bağlandığını (UI Element to Element Binding) inceliyor olacağız. </span>
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]
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#]
{
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ı]
Şimdi yukarıda event listener ile yaptığımız bağlama işlemini Silverlight 3 Beta ile gelen yeni özellik ile yapalım.
[XAML]
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>

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
Yorumlar (1)
merhaba, combobox a verileri veritabanından çekiyorum ve textbox veya textblock ta göstermem gerek. örnekte ki gibi yaptım ama olmuyor. veritabanının yolunu gösteriyor. hata nerde? nasıl düzeltebilirim?