WPF'te bir data binding işlemi gerçekleştirilirken çift yönlü, tek yönlü gibi pek çok farklı veri transferi kullanılabilir. Veri akışının hedeften kaynağa mı yoksa kaynaktan hedefe mi olacağını binding modlar ile belirtebiliriz. Binding modun değeri kullanıcının set edebildiği kontroller için varsayılan olarak TwoWay olarak gelmektedir.

WPF 4.5 ile beraber Delay adında yeni bir binding özelliği geldi. Bu özellik bize artık data binding işlemlerini belirli bir süre geciktirebilme imkanını vermektedir. Bir diğer önemli nokta bu özellik hedeften kaynağa olacak şekilde tek yönlü çalışmaktadır.Parametre olarak da integer tipinde milisaniye değeri almaktadır ve varsayılan değeri 0’dır.

Kullanım senaryosu olarak açıkcası gerçel hayattan aklıma şu an bir örnek gelmiyor fakat MSDN'de bu özellikle ilgili güzel bir kullanım alanından bahsedilmiş. Örneğin bir slider kontrolümüzün olduğunu düşünelim ve bu kontrolümüzün değerine göre işlem yaptırmamız gerektiğini varsayalım. Slider’ın değerini 0’dan 100’e getirip bir işlem yaptığımızda 0 ile 100 arasındaki her bir değer için kaynağı güncellemiş olduk fakat bize lazım olan değer sadece 100 değeri. İşte tam bu noktada Delay özelliğini kullanıp makul bir milisaniye değeri verdikten sonra kaynağı güncellemek doğru bir hareket olacaktır.

Nasıl kullanırız?
<StackPanel>  
  <TextBox x:Name="txtTarget" Width="200" Margin="10" Text="{Binding ElementName=txtSource,Path=Text,Delay=1000,UpdateSourceTrigger=PropertyChanged}"/>
  <TextBox x:Name="txtSource" Width="200" />
</StackPanel>  

Örnek kodda Delay özelliğini 1000 olarak set ederek hedef TextBox’da yaptığımız değişikliklerin her bir karakter girildiğinde yansıtılması yerine 1 saniye sonra yansıtılmasını sağlamış olduk.

Not: Yukarıdaki örnek kod .NET 4.5 Preview ortamında Visual Studio 11 Developer Preview kullanılarak test edilmiştir.

About the Author