Silverlight ile proje geliştirmeye başladığınızda sizde göreceksiniz ki esneklik açısından sınır yok!
Tasarım ve Geliştirme kısımlarının ayrı yürütüldüğü projeleri düşünecek olursak Behavior’lar süper önem taşıyor. Örnek verecek olursak her proje de kullanılmak üzere birtakım özel fonksiyonlar(Tarih saat Gösterimi,TamEkran Gösterimi) vardır.Ve her projede bu fonksiyonların geliştirici tarafından tasarımcıya aktarılması gerekir. Peki bu işlevsel methodları bir Silverlight Class Library de tutup her projeye uygulasak ve tasarımcı sürükle bırak işlemi ile bunları kullansa nasıl olur ?
Örnekler ile anlattıklarımızı destekleyelim
İlk olarak yeni bir Silverlight projesi oluşturup yanına ek olarak birde Silverlight ClassLibrary alalım.
FullScreen.cs
İlk olarak Silverlight projelerinde sıkça kullanacağımız ( SL5 FullScreen modda input girişi desteği geldi) Tam Ekran özelliğine bakalım.Aşğıdaki örnekte FullScreen koduna ek olarak TriggerAction adında bir abstract class ve onun implemente ettiği Invoke methodunu görüyoruz.
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Interactivity;
namespace SLBehaviorLibrary
{
public class FullScreenBehavior : TriggerAction<UIElement>
{
protected override void Invoke(object parameter)
{
Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
}
}
}
TodayBehavior.cs
Bugünün tarihi hemen hemen her uygulamada gösterilen basit ama kullanışlı bir olaydır.Ve genelde ya bir Label yada TextBlock üzerinde gösteririz.Aşağıdaki örneğimizde hedef olarak TextBlock’u seçip Invoke methodu içinde Target üzerinden gittiğimde Text özelliğine bugünün tarihini atamamla developer olarak işim bitmiş olacak. Designer ise sayfada herhangi bir texblock’a bu behavioru sürükle bırak şeklinde uygulayabilecek.
public class FullScreenBehavior : TriggerAction<UIElement>
{
protected override void Invoke(object parameter)
{
Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
}
}
RandomNumber.cs
Genelde seminerlerde kullandığımız rastgelle sayı üreten bir behavior yazalım.Bu sefer min ve max parametrelerini de belirleyerek tasarımcı arkadaşa sunalım.
namespace SLBehaviorLibrary
{
public class RandomNumber : TriggerAction<UIElement>
{
public int Min { get; set; }
public int Max { get; set; }
Random rnd;
int result;
protected override void Invoke(object parameter)
{
rnd = new Random();
result = rnd.Next(Min,Max);
MessageBox.Show(result.ToString());
}
}
}
OpenPopup.cs
Son olarak Popup’a ait açma kapama işlemini gerçekleştiren bir behavior yazalım.Böylelikle bilgilendirme olayını da bu şekilde çözmüş olabiliriz
Yine Target üzerinden gittiğimizde Popup’a ait özelliklere erişebiliyoruz.
public class OpenPopup: TargetedTriggerAction<Popup>
{
protected override void Invoke(object parameter)
{
this.Target.IsOpen=this.Target.IsOpen==true ? this.Target.IsOpen=false : this.Target.IsOpen=true;
}
}
Benim developer olarak işim bitti aslında.Artık Designer devreye girerek yukarıdaki behaviorları ister tek tek isterse iç içe kullanabilir.Bu makalede Behaviorlara developer tarafı ile baktık diğer makalede ise Expression Blend'de designer tarafından bakıyor olacağız.
Sağlıcakla Kalın!
Etiketler: behavior, silverlight