İlkay İlknur
Just a developer...

Silverlight 5 Beta - Tarayıcı İçerisinde Elevated Trust ve OOB Yenilikleri

Salı, 17 Mayıs 2011 21:56 by ilkayilknur

Merhaba Arkadaşlar,

Bu görsel dersimizde Silverlight 5 Beta ile tarayıcı içerisindeki Elevated Trust özelliği ile OOB tarafında gelen sınırsız dosya erişimi, multiple Ad-Hoc Windows özelliklerini inceliyoruz.

Görsel dersi buradan indirebilirsiniz.

Umarım faydalı bir görsel ders olmuştur.

Görüşmek Üzere,

Silverlight 5 Beta - Style'lar İçerisinde Binding ve Ancestor RelativeSource Binding Özelliği

Perşembe, 21 Nisan 2011 23:06 by ilkayilknur

Merhaba Arkadaşlar,

Bu görsel dersimizde Silverlight 5 Beta ile gelen Style'lar içerisindeki Binding özelliği ile Ancestor RelativeSource özelliğini inceliyoruz. 

Umarım faydalı bir ders olmuştur.

Görsel dersi buradan indirebilirsiniz.

Herkese Kolay Gelsin,

Hoşçakalın

Tags:   ,
Categories:   Silverlight | Silverlight 5.0
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share

Silverlight 5 Beta - XAML Debugging ve Custom Markup Extensions

Salı, 19 Nisan 2011 08:40 by ilkayilknur

Merhaba Arkadaşlar,

Bu görsel dersimizde Silverlight 5 ile gelen Data Binding ifadeleri üzerinde debug yapma olanağı ile XAML içerisinde kendi markup extensionlarımızı oluşturmayı sağlayan Custom Markup Extensions özelliğini inceliyoruz.

 

Görsel dersi buradan indirebilirsiniz.

Umarım faydalı bir görsel ders olmuştur.

Görüşmek Üzere,

Tags:   ,
Categories:   Silverlight | Silverlight 5.0
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share

Silverlight 5 Beta - Kontrol Yenilikleri

Pazar, 17 Nisan 2011 20:56 by ilkayilknur

Merhaba Arkadaşlar,

Bu görsel dersimizde Silverlight 5 ile gelen Kontrol Yeniliklerini inceliyoruz.

 

Tags:   , , , , , , , , , , , , , ,
Categories:   Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0 | Silverlight 5.0
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (1) | Yorumlar RSSRSS Yorum Takibi
Share

MVVM (Model-View-ViewModel) Nedir ?

Çarşamba, 30 Mart 2011 21:46 by ilkayilknur

Merhaba Arkadaşlar,

Bir uygulamayı geliştirirken göz önüne almamız gereken en önemli noktalardan biri de uygulamanın genişletilebilir, bakılabilir ve ölçeklenebilir bir biçimde geliştirilmesi noktasıdır. Özellikle uygulamalarımızı geliştirirken uygulamaların daha sonra hiç değişmeyeceğini düşünerek genelde geliştirmelerimizi yapmaktayız. Daha spesifik olarak konuşursak Silverlight kullanarak geliştirdiğimiz uygulamalarda da doğrudan ekranın arkasında bulunan .cs uzantılı dosya içerisinde tüm uygulama mantıklarını, arayüz mantıklarını ve daha pek çok başka konularla ilgili kodları yazmaktayız. Bu şekilde bir uygulama geliştirdiğimizde dolayısıyla tüm servis çağırımları, ekran işlemleri karmakarışık bir biçimde burada bulunmakta. Uygulamamıza yeni bir istek geldiğinde ise dolayısıyla burada bulunan kodları karıştırmaktayız ve kodlar içerisinde ister istemez kaybolmaktayız. Yada örneğin web üzerinde geliştirdiğimiz Silverlight uygulamamızı Windows Phone 7 üzerinde çalışacak bir biçimde yazmamız gerektiğinde elimizde hazır bir yapı olmadığı için ister istemez tüm mantıkları sıfırdan bu sefer WP7 uygulaması için yazmaktayız. Aslında baktığımızda uygulama geliştirme mantıkları birbiriyle neredeyse aynı olan 2 farklı platformdaki uygulamaların sadece arayüz kısımlarını değiştirmek suretiyle birbirine çevrilmesi mümkün olabilir gibi geliyor aslında ? Çok fazla yaptığımız hatalardan bahsedip çıldırmadan biraz daha derine inelim ve bu kötü alışkanlıklardan nasıl kurtulabiliriz bir bakalım. 

Uygulama geliştirirken göz önünde tutmamız gereken noktalardan biri de uygulama içerisindeki kavramların birbirinden ayrık biçimde çalışacak biçimde geliştirilmesi(Seperation of concerns). Bu şekilde bir uygulama geliştirme mantığı benimsediğimizde uygulamamız içerisinde bulunan yapılar birbiri ile sıkı sıkıya bağlı olmayacak ve böylece birinde yapılacak olan değişiklikler diğer yapıları olabildiğince az etkileyecek. Aslında bu söylediklerimizin hepsi gerek web uygulaması olsun gerek windows uygulaması olsun gerek se mobil uygulama olsun tüm uygulama türlerinde geçerli. Web tarafına baktığımızda aslında kavramların birbirinden ayrılmasını sağlayan bir pattern (Model-View-Controller(MVC)) bulunmakta.

Silverlight tarafına baktığımızda yapı klasik web uygulamalarına göre biraz farklı. Aynı farklılıklar ise aslında benzer yapıları itibariyle WPF ve Windows Phone uygulamalarında da bulunmakta. Bu bahsettiğimiz uygulamalara baktığımızda ise yaklaşık 1-1.5 senedir kullanılmakta olan bir yapı bir mimari model karşımıza çıkmakta. Bu yapının adı ise Model-View-ViewModel yani MVVM. MVVM patternının temeline indiğimizde ise Martin Fowler'ın önermiş olduğu Presentation Model'i görmekteyiz. Aslında MVVM, Presentation Model mimarisinin WPF ve Silverlight teknolojileri için özelleştirilmiş bir halidir. Doğrudan Silverlight ve WPF için özelleştirilmiş bir uygulama geliştirme mimarisi olduğu içinde haliyle bu teknolojilerin tüm özelllikleri fazlasıyla bu mimari model içerisinde kullanılmakta.

Şimdi isterseniz MVVM yapısının temel parçalarından kısaca bahsedelim.

Model :  Model, uygulama içerisinde kullanacağımız olan datadır. Bu datalar WCF RIA Services ile döndürülen entityler olabileceği gibi doğrudan tanımlanmış POCO nesneleri de olabilir.

View : View, datanın sunulduğu katmandır. Tüm görsellikler View'da yer alır. Kısaca verinin sunulduğu yerdir(Ekran).

ViewModel : ViewModel ise Model ile View'ı bağlayan yapıdır.  View ile Model arasında bir yapıştırıcı görevi görür. View doğrudan ViewModel yardımıyla Model'e erişir ve bazı işlemleri gerçekleştirir. Teknolojik olarak WPF veya Silverlight teknolojilerinden konuşursak ViewModel aslında View'ın DataContext'idir.

MVVM yapısına baktığımız zaman WPF ve Silverlight teknolojilerinde bulunan Commanding, Binding, Behaviour gibi özelliklerin sıklıkla kullanıldığını görmekteyiz. Bir sonraki yazımızda da bu konuları uygulamalı olarak görüyor olacağız.

Bu kısa tanıtım yazımızı sonlandırırken MVVM'in getirdiği artıları aşağıdaki bir kaç madde ile özetleyebiliriz. 

  • Commanding, Binding, Behaviour gibi özellikleri kullanarak dekleratif programlama özelliklerini kullanarak hızlı ve etkin uygulama geliştirme.
  • View arkasında bulunan kod dosyası içerisinde sıfır kod yazarak bağımlılıkları minimuma indirmek ve uygulama içerisinde katmanların bağımlılıklarını minimuma indirmek.
  • Daha genişletilebilir, bakımı yapılabilir ve test edilebilir uygulamalar geliştirmek.
  • Arayüzü kolay bir şekilde taşınabilen uygulamalar geliştirmek. 
Evet arkadaşlar bu yazımızın da sonuna geldik. Bir sonraki yazımızda uygulamalı olarak MVVM'e giriş yapıyor olacağız ve MVVM için geliştirilmiş olan MVVM Light Toolkit yardımıyla ilk uygulamamızı ve temel yapıları daha detaylı biçimde inceliyor olacağız.

Görüşmek Üzere,
Tags:   ,
Categories:   Silverlight
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (4) | Yorumlar RSSRSS Yorum Takibi
Share

Silverlight'ta Textbox'a Focuslanma Sorunu ve Çözümü

Pazartesi, 10 Ocak 2011 15:11 by ilkayilknur

Merhaba Arkadaşlar,

Kullanıcılardan veri girişi aldığımız ekranlarda kullanıcının herhangi bir seçim yapmadan doğrudan klavye kullanarak veri girişine başlaması için ilgili bir kontrole programatik olarak focus olmayı sağlamaktayız. Böylece kullanıcı sayfa üzerinde focuslanan kontrolden itibaren veri girişine başlamakta, klavyeyi kullanarak diğer girdi kontrollerine erişebilmekte ve veri giriş işlemini kısa sürede gerçekleştirebilmekte. Aynı senaryo Silverlight uygulamaları için de geçerli.

O zaman Silverlight tarafından ilk olarak sahneye 2 TextBox kontrolü ekleyelim ve daha sonra 2. textbox'a focuslanmayı sağlayalım. 

<StackPanel>
    <TextBox Width="208" x:Name="txtOne" Margin="0,10,0,0" />
    <TextBox Width="208" x:Name="txtTwo" Margin="0,10,0,0"/>
</StackPanel>

Uygulama kodumuz.

public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    txtTwo.Focus();
}

Uygulamayı çalıştırdığımızda ise aslında beklemediğimiz bir sonuç ile  karşılaşmaktayız.

Ancak browser içerisinde herhangi bir noktaya tıklarsak focus'un doğrudan ikinci textboxa geçtiğini görmekteyiz. Aslında bu da bizim istediğimiz davranış. Peki ama neden ekrana tıklamamız gerekti ? 

Bunun nedeni sayfa yüklendiğinde focus'un Silverlight uygulamasını içerisinde barındıran elementte bulunmaması. Bu nedenle biz ekrana tıklayarak plugin'in içerisinde bulunduğu kontrole focuslanmayı sağlamaktayız ve bu işlem sonucunda bizim istediğimiz textboxa focuslanma sağlanabilmekte. Peki bu problemi nasıl çözebiliriz ? 

Bu problemin çözümü için 2 yöntem bulunmakta. Birincisi javascript ile ilgili elemente focuslanmayı sağlamak. İkincisi ise javascript ile yaptığımız işlemi Silverlight tarafında sunulan imkanlar ile gerçekleştirmek.

1.Yöntem

Aşağıda bulunan javascript kodunu uygulamamıza ekleyerek Silverlight pluginine focuslanmayı sağlayabiliriz.

 var SlElement = document.getElementById('silverlightControlHost');
 if (SlElement)
     SlElement.focus();

2. Yöntem

Silverlight'ın bizim browsera ve HTML DOM'a erişmeyi sağlayan ve bir takım işlemleri gerçekleştirmemizi sağlayan System.Windows.Browser namespace'i içerisinde bulunan HtmlPage isimli tipin üzerinden sayfada bulunan plugin'e aşağıdaki gibi focuslanabiliriz.

System.Windows.Browser.HtmlPage.Plugin.Focus();

Uygulamamızın tam kodu ise şu şekilde

public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    System.Windows.Browser.HtmlPage.Plugin.Focus();
    txtTwo.Focus();
}

Uygulamayı çalıştırırsak

 

 

Böylece sizlerde focus metodunu kullandığınızda eğer istediğiniz kontrole focusu sağlayamazsanız yukarıdaki yöntemlerden biri ile sorunu çözebilirsiniz.

Görüşmek Üzere,

Tags:   , , , , , , , , ,
Categories:   Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight 3.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0 | Silverlight | Silverlight 3.0 | Silverlight 4.0 | Silverlight 4.0 | Silverlight | Silverlight 3.0
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share

Windows Phone 7 Uygulamalarında InputScope ile Girdi Tipine Uygun Klavye Gösterimi

Salı, 23 Kasım 2010 16:08 by ilkayilknur

Merhaba Arkadaşlar,

Günümüzde mobil cihazlara baktığımızda günlük işlemleri en hızlı şekilde gerçekleştirmemiz amacıyla tasarlandıklarını görmekteyiz. Bunun yanında mobil cihazlar içerisinde bulunan işletim sistemleri de donanımsal yeniliklerin yanında pek çok yazılımsal yeniliği de gerek kullanıcılara gerekse biz yazılım geliştiricilere ulaştırmakta. Bu yazımızda ise mobil cihaz üzerinden farklı formatlarda veri girerken sürekli olarak klavye türünü değiştirme sıkıntısından programatik olarak kullanıcıları nasıl koruyabiliriz sorusuna cevap arayacağız. 

Geliştirdiğimiz uygulamalarda kullanıcılardan veri alma amaçlı sıkça kullandığımız kontrollerden biri de hiç şüphesiz Textbox kontrolü. Mobil uygulamalarda kullanıcı Textbox kontrolüne tıkladığında klavye görüntülenmekte ve kullanıcı açılan klavye vasıtasıyla verilerini girmekte. Ancak örneğin telefon numarası girileceği zaman klavye numara girme düzenine getirilip numaralar görüntülenen diğer klavye üzerinden girilmekte. Yada bir mail adresi girerken "@" işaretini yapmak için klavye yine numara düzenine getirilmekte buradan @ işareti girilerek sonra tekrar normal klavye üzerinden mail girişine devam edilmekte. Bu durum özellikle sürekli olduğu durumlarda oldukça can sıkıcı olabilmekte. 

Default Windows Phone 7 Klavyesi

Numara Görünümü


Yukarıda sizin de gördüğünüz gibi klavyenin sürekli olarak değiştirilmesi oldukça can sıkıcı bir durum. Bu nedenle Windows Phone 7 içerisinde bulunan Textbox kontrollerinin ne tür veriler taşıyabileceğini önceden bildirerek telefonun Textbox'ın içerisine girilecek veri tipine uygun bir klavye çıkarmasını sağlayabilmekteyiz. Üstelik tüm bu işlemi sadece tek bir property üzerinden gerçekleştirmekteyiz. :) Textbox kontrolü içerisinde bulunan InputScope propertysi ile. InputScope propertysinin alabileceği değerler ise şunlar.

 

XAML tarafından ise ilgili propertynin değerinin atanması şu şekilde.

<TextBox x:Name="txtPhone" InputScope="TelephoneNumber" Margin="0,0,0,536" />

Gördüğümüz gibi arkadaşlar veri tipi seçeneklerimiz oldukça fazla. Böylece yukarıdaki veri tipi seçeneklerini kullanarak veri tipinin girişine uygun klavyeleri görüntüleyebilmekte ve böylece hızlı bir şekilde kullanıcılardan girdileri alabilmekteyiz. Aşağıda çeşitli veri tiplerine uygun olarak görüntülenen klavyeleri görebilirsiniz. Böylece kullanıcıların nasıl daha iyi bir deneyim elde edeceklerini daha iyi anlayabilirsiniz. :)

TelephoneNumber

URL

EmailNameOrAddress

Görüşmek Üzere,

Tags:   , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Categories:   Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight | Silverlight
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share

Windows Phone 7 Uygulamalarında Orientation Kontrolü

Pazartesi, 1 Kasım 2010 21:46 by ilkayilknur

Merhaba Arkadaşlar,

Bu yazımızda Windows Phone 7 uygulamalarında telefonun oryantasyonun değiştiğinde uygulamamızın bu değişime nasıl cevap verebileceği konusunu incelemeye çalışacağız. Tabi oryantasyon kelimesini okurken tam olarak neyi kastetmek istediğimi anlamamış olabilirsiniz. Orientation kelimesinin Türkçe karşılığı olarak kullanmaya çalıştığım bu kelimede aslında telefonun yönünün çevrilerek uygulama içerisindeki ekranların farklı kullanım şekillerini almasını kastetmeye çalışmaktayım.

İlk olarak örneğimize hızlı bir şekilde yeni bir Windows Phone Application yaratarak başlayıp hiç bir değişiklik yapmadan açılan uygulamayı çalıştırarak başlıyoruz. :) Emülatörümüz açıldıktan sonra emülatörün sağ tarafına baktığımızda emülatör üzerinde bir takım değişiklikleri yapmamız için bulunan butonları görüyor olacağız. WP7Buttons

Bu butonlar emülatörümüzü sağa ve sola çevirerek bir telefonun olası kullanım durumlarını test etmemizi sağlamakta. Bu nedenle bu yazımız boyuncu bu butonları oldukça fazla kullanıyor olacağız. Şimdi emülatörümüzü kapatmadan telefonun sol tarafa çevrilmiş haline baktığımızda uygulamamız nasıl bir davranış sergilemekte bunu aşağıdaki resimden inceleyelim.

WP7LeftError

Resme baktığımızda aslında uygulamadan beklediğimiz davranışı görememekteyiz. Normalde baktığımızda başlıkların da dönüp ekranın yeni durumuna göre tekrardan konumlanması gerekirdi. İsterseniz hemen XAML tarafına geçelim ve bu durum neden oluştu incelemeye çalışalım.

Xaml

Aslında XAML tarafına geçtiğimizde herşey yukarıdaki resimde gördüğümüz attributelerde gizli. SupportedOrientations attribute’nde sayfamızın hangi tür yönleri desteklediğini belirtmekteyiz. Böylece sayfamız dikey mi yatay mı yoksa her iki şekilde kulanımı da destekleyecek mi konularında bildirimimizi bu attribute yardımıyla gerçekleştirebiliyoruz. Orientation attribute ile de sayfamızın ilk olarak hangi konumda olduğunu belirtebilmekteyiz. Bu tage göre sayfamız ilk açıldığında belirttiğimiz yöne doğru açılmaktadır.

Şimdi isterseniz SupportedOrientations attribute değerini PortraitorLandscape olarak değiştirelim ve yukarıda gerçekleştirdiğimiz senaryoyu baştan canlandıralım ve bakalım sonuç ne olacak ?

BothOrientation

Evet şimdi uygulamamız istediğimiz şekilde bir davranış sergiledi. İşte bu şekilde uygulamamızdaki sayfa yönlerini dilediğimiz şekilde ayarlayabilmekteyiz. Peki cihazın yönü değiştirildiğinde haberimiz olabilir mi acaba ? Mesela bir resmi yada videoyu gösterdiğimizi düşünürsek telefon yatay konuma getirildiğinde ilgili medyayı nasıl tam ekran ekran yapabiliriz. Bunun için bize sayfanın yönünün değiştiğine dair bir event gerekli. Bu noktada da yardımıza OrientationChanged eventi yetişmekte. Böylece bu event her tetiklendiğinde sayfamızın yönünü kontrol edebilir ve duruma göre istediğimiz işlemleri gerçekleştirebiliriz.

Bir sonraki yazımızda görüşmek üzere,

Hoşçakalın,

Tags:  
Categories:   Silverlight | Windows Phone 7
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share

Her Silverlight Developer Aynı Zamanda Bir Windows Phone Developerdır

Cuma, 29 Ekim 2010 19:53 by ilkayilknur

Merhaba Arkadaşlar,

Başlığa baktığınızda aslında oldukça iddialı bir cümle olduğunu düşünüyor olabilirsiniz. Ancak Microsoft’un Silverlight’ı Windows Phone 7 için geliştirme platformu olarak belirlemesiyle özellikle Silverlight developerlar için oldukça güzel bir kapı açılmakta. Web üzerinde Cross-browser ve Cross-Platform(Windows –Mac) olarak çalışan uygulamalarımız artık doğru programlama tekniklerini kullanırsak sadece arayüz değişikliği yapmak suretiyle Windows Phone 7 işletim sistemi yüklü telefonlarda da çalışıyor duruma gelebilmekte.

Windows Phone 7 Telefon Spesifikasyonları

Microsoft tarafında Windows Phone 7 ile beraber baktığımızda yeni bir yaklaşımın olduğunu görmekteyiz. Bu da artık tüm telefonlar üzerinde çalışacak bir işletim sistemi yerine belirli spesifikasyonlara sahip telefonlar üzerinde çalışacak bir işletim sistemi geliştirme yaklaşımı. Bu yaklaşım ile artık birtakım özellikler telefonlar üzerinde standart olarak bulunmakta. Böylece hem işletim sistemi bu özellikleri kullanarak daha performanslı ve etkin çalışmakta hem de biz yazılım geliştiriciler üzerinde yazılım geliştirdiğimiz telefonların standartlarını bilmekteyiz.

Şimdi isterseniz Windows Phone 7 işletim sistemine sahip olacak telefonların spesifikasyonlarına bir göz atalım.

WP7Spesifications

Ekran : Windows Phone 7 işletim sistemlerine sahip telefonlarda 480x800 çözünürlüğünde ekranlar şu anda  standart olarak bulunmakta. Ancak gelecekte 320x480 çözünürlüğünde ekranlara sahip telefonlar da raflardaki yerini alıyor olacak. Ancak bu çözünürlükler dışındaki telefonlarda Windows Phone 7 işletim sistemi olması söz konusu değil.

Dokunmatik Ekran : Windows Phone 7 işletim sistemine sahip telefonlarda en az 4 adet dokunma noktası bulunmakta.

Sensörler : Windows Phone 7 işletim sistemine sahip telefonlarda Lokasyon tespiti için GPS ve  telefonun hareketlerini algılamak için de Accelerometer sensörleri bulunmakta.

Kamera : Windows Phone 7 işletim sistemine sahip telefonlarda 5 megapiksel veya üzerinde kamera bulunmakta.

Butonlar : Windows Phone 7 işletim sistemine sahip telefonlarda standart olarak telefonun üzerinde 3 adet buton bulunmakta. Bunlar geri tuşu, arama tuşu ve start tuşu.

Diğer standart özellikleri ise yukarıdaki resimden görebilirsiniz.

Windows Phone 7 Uygulama Geliştirme Ortamı

Evet aslında biz yazılım geliştiricilerin merak beklediği kısma geldik. Yazılım geliştirme ortamları. Windows Phone 7 işletim sistemi üzerinde uygulamalar geliştirmek için kullanabileceğimiz 2 platform bulunmakta. Bunlar XNA ve Silverlight. Özellikle oyun gerçekleştirmeyi düşünüyorsanız 2D ve 3D desteği dolayı XNA’I tercih edebilirsiniz. Bunun yanında daha veri odaklı uygulamalarda Silverlight tarafını tercih etmek daha doğru olacaktır. Bunun yanında tabi bazı ortak XNA kütüphanelerinin Silverlight uygulaması içerisinde de kullanılabilmesi mümkün. Ancak bu ortak kütüphaneler dışındaki kütüphaneleri kullanacaksak uygulamamızı XNA kullanarak geliştirmek durumundayız.

Geliştirme ortamı için gerekli kurulumu buradan indirebilirsiniz. Kurulumları yaptıktan sonra bilgisayarınıza aşağıdaki programların kurulduğunu göreceksiniz.

  • Visual Studio 2010 Express for Windows Phone
  • Expression Blend 4 Express for Windows Phone

Eğer bilgisayarınızda Visual Studio veya Expression Blend’in diğer ileri sürümleri var ise gerekli araçlar varolan uygulamalarınıza entegre olmakta. Ve tüm bunların yanında en önemli nokta ise bu araçların hepsinin ÜCRETSİZ olması.

İlk Windows Phone 7 Uygulaması – Hello World !

Windows Phone 7 ile ilgili genel bilgileri verdikten sonra gelelim konunun pratik tarafına. Yukarıda belirttiğim kurulumu yaptıktan sonra Visual Studio’yu açtıktan sonra File –> New Project yolunu izlediğimizde sol tarafta bulunan proje tiplerinde bir yenilik gözümüze çarpıyor.

ProjectTypes

“Silverlight for Windows Phone” seçeneği proje tipleri içerisine kurulum sonrasında eklenmekte. Bu proje tipi içerisinde farklı uygulama tipleri bulunmakta. Bunlar ,

Windows Phone Application : Klasik Page tabanlı Windows Phone uygulaması geliştirmek için kullanabileceğimiz proje tipi. Silverlight uygulaması geliştirirken seçtiğimiz Silverlight Application uygulama tipinin Windows Phone tarafındaki karşılığı diyebiliriz.

Windows Phone Databound Application : Windows Phone üzerinde özellikle veri listeleme tabanlı bir uygulama geliştireceksek bu proje tipi bizlere giriş yapmak amacıyla oldukça yardımcı olacaktır. Özellikle içerisinde barındırdığı şablon ile veri listeleme işlemlerinin nasıl yapılacağı konusunda bizlere yardımcı olacaktır. Bu proje tipinden bir uygulama yarattığınızda doğrudan uygulamayı çalıştırarak veri listeleyen örnek bir uygulama görebilirsiniz.

Windows Phone Class Library : Windows Phone uygulamaları için library geliştirmek amacıyla kullanacağımız proje tipi.

Windows Phone Panaroma Application : Windows Phone uygulamalardaki bana göre en önemli kontrollerden olan Pivot ve Panaroma kontrollerinden Panaroma kontrolünün örnek bir kullanımını içerisinde barındıran proje tipi.

Windows Phone Pivot Application : Yukarıda bahsettiğim Pivot kontrolünün örnek bir kullanımının bulunduğu proje tipi.

Ayrıca yazımızının başlarında Windows Phone üzerinde XNA kullanılarakta uygulama geliştirilebildiğinden bahsetmiştim. Doğrudan XNA platformunu kullanarak uygulama geliştirmek istersekte soldan XNA uygulama seçeneğini seçerek buradan uygun olan proje tipini seçebiliriz.

XNAProjectTypes 

XNA tarafına baktığımızda ise Windows Phone Game ile Windows Phone Game Library proje tipleri çıkmakta. İsimlerden de anlayacağınız üzere çok fazla ayrıntıya girmeye gerek olmadığını düşünüyorum. :)

Windows Phone Uygulama Yapısı

Peki klasik bir Windows Phone uygulaması içerisinde ne gibi bileşenler bulunmakta derseniz hemen bir Windows Phone Application yaratıp proje içerisindeki bileşenleri inceleyelim.

WP7Project

App.xaml : Silverlight uygulamalarından da aşina olduğumuz App.xaml Windows Phone uygulamalarında da Silverlight uygulamalarında olduğu gibi benzer durumlarda kullanılmakta. Örneğin uygulama çapında bir resource tanımlamak istersek bunun için App.xaml ‘ı kullanabiliriz. Bunun yanında belki de en önemli kullanım amaçlarından biri  de uygulama çapında meydana gelen bazı eventlerin yakalanarak handle edilmesi yine bu sınıf üzerindenm sağlanmakta. Bu eventlerin neler olduğuna ilerleyen yazılarımızda değiniyor olacağız.

ApplicationIcon.png : Uygulama telefon üzerindeki menü üzerinde görüntülendiğinde yanında bulunacak olan uygulama iconu.

Background.png : Uygulama içerisinde arka plan olarak kullanılabilecek olan Image.

SplashScreenImage.jpg : Uygulamanın telefon kullanıcısı tarafından seçilip başlatılmasıyla uygulamanın telefon üzerinde çalışmasına kadar geçen sürede ekranda gösterilecek olan resim.

Windows Phone Emulator

Windows Phone uygulaması geliştirmek için illa ki bir Windows Phone 7 işletim sistemi yüklü bir telefona sahip olmak zorunda değiliz. Bunun yerine uygulamalarımızı Windows Phone işletim sistemine sahip bir emülatör üzerinde test edebiliriz. Bu emülatör aslında Windows Phone 7 işletim sistemini içerisinde çalıştıran bir sanal makina. Böylece uygulamalarımızı bu emülatör içerisine deploy edip uygulamamızı çalışmasını dorğudan emülatör üzerinde izleyebilir ve test edebiliriz. Bunun yanında tabi ki Visual Studio içerisindeki seçenek yardımıyla uygulamaları doğrudan emülatör yerine Windows Phone 7 işletim sistemine sahip telefonumuza da yükleyip, test edebiliriz.

DebugOptions

Uygulamayı doğrudan emülatörü seçerek çalıştırdığımızda ise öncelikli olarak emülatör çalışmakta daha sonra uygulamamız yüklenerek çalışmaktadır.

WP7Emulator

Emülatöre baktığımızda ise aslında emülatörün pek çok önemli işlevsellikleri bulunmakta. Emülatörü istediğimiz yönlere çevirebilmekte ve istediğimiz durumlarda emülatörden bir takım verileri alabilmekteyiz. Ancak bunun yanında tabi bazı durumlarda emülatör bize yardımcı olamamakta. Bu gibi durumlarda ise bazı extensionlar bizim yardımımıza koşmakta. Bu konulara da ilerleyen yazılarda değiniyor olacağız.

Evet arkadaşlar bu yazımızda Windows Phone 7 Uygulama geliştirme dünyasına giriş yaptık. İlerleyen yazılarımızda Windows Phone 7 üzerinde uygulama geliştirme ile ilgili daha detaya giriyor olacağız.

Görüşmek üzere,

Tags:   ,
Categories:   Silverlight | Windows Phone 7
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Yorumlar RSSRSS Yorum Takibi
Share

WCF RIA Services CRUD(Create,Read,Update,Delete) İşlemleri

Pazar, 17 Ekim 2010 01:55 by ilkayilknur

Merhaba Arkadaşlar,

Bu yazımızda daha önceden giriş yaptığımız WCF RIA Service’lerinde CRUD işlemlerini inceliyor olacağız. Eğer İlk WCF RIA Service Uygulaması isimli yazıyı okumadıysanız öncelikle bu postu okumanızı tavsiye ederim. Çünkü doğrudan bu post içerisinde yarattığımız veri modeli ve domain service üzerinden ilerliyor olacağız.

Sunucu Tarafında Oluşturulan Kodlar

WCF RIA Servicelerini kullandığımız uygulamalarda sunucu tarafında çalışacak olan ASP.NET projesi içerisine bir Domain Service Class eklediğimiz zaman bir önceki postumuzda da göreceğimiz gibi daha önceden eklediğimiz veri modelini seçmekte ve bu model içerisinde bulunan hangi tiplerin servis üzerinden dışarıya sunulacağını seçmekteyiz. Ayrıca bu tiplerin servis üzerinden bilgilerinin değiştirilip değiştirilemeyeceği bilgisini verdikten sonra Domain Service Class’ımız oluşmakta ve bir takım yardımcı kodlar üretilmekte. Örneğin Product tipi için yaratılan kodları inceleyelim.

        public IQueryable<Product> GetProducts()
        {
            return this.ObjectContext.Products;
        }

        public void InsertProduct(Product product)
        {
            if ((product.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(product,
  EntityState.Added);
            }
            else
            {
                this.ObjectContext.Products.AddObject(product);
            }
        }

        public void UpdateProduct(Product currentProduct)
        {
            this.ObjectContext.Products.AttachAsModified(currentProduct,
            this.ChangeSet.GetOriginal(currentProduct));
        }

        public void DeleteProduct(Product product)
        {
            if ((product.EntityState == EntityState.Detached))
            {
                this.ObjectContext.Products.Attach(product);
            }
            this.ObjectContext.Products.DeleteObject(product);
        }

Kodlara baktığımız zaman Visual Studio’nun biz yardımcı olması amacıyla CRUD işlemlerini gerçekleştiren bir takım metotları yarattığını görmekteyiz. İlk olarak GetProducts isimli metodu incelediğimizde IQueryable interface’ini implemente eden bir tip döndürdüğünü görmekteyiz. Böylece IQueryable interface’ini implemente eden bir tipin Silverlight uygulamasına döndürülmesiyle beraber bu tip üzerinde Silverlight tarafında LINQ sorgusu yazıp sunucuya göndermemiz mümkün olacaktır.

Bunun haricinde InsertProduct, DeleteProduct, UpdateProduct isimli metotları incelediğimizde metotlar içerisinde parametre olarak alınan nesnelerin statelerinin değiştirilerek ilgili işlemlerin gerçekleştirildiğini görmekteyiz.

Ayrıca metotları incelerken isimlerinden de farkedeceğiniz gibi bir isimlendirme standartı mevcut. Get{Tip İsmi}s, Update{Tip İsmi}, Delete{Tip İsmi}, Insert{Tip İsmi} şeklinde bir standart olduğunu görmekteyiz. Böylece birazdan da göreceğimiz üzere Silverlight tarafında doğrudan service üzerinden Add, Delete, Insert yada Products gibi referanslar üzerinden birtakım işlemleri gerçekleştireceğiz. Böylece arka planda aslında ilgili isimlendirme standartına uygun olarak yazılan metotlar çağrılacaktır. Peki bu isimlendirme standartını değiştiremiyor muyuz ? Tabi ki değiştirebiliriz. İlerleyen yazılarda attribute bazlı yaklaşımlarla nasıl değişirebileceğimizi de inceliyor olacağız.

Silverlight Tarafına Geçiyoruz

Sunucu tarafındaki uygulamamızı derlediğimizde de Silverlight uygulaması için de birtakım proxy yaratma işlemleri gerçekleştirilmekte. Normalde baktığımızda hiçbir değişiklik göremiyoruz. Ancak Visual Studio içerisinden "Silverlight projesi için “Show All Files” seçeneğini seçersek WCF RIA Service için yaratılan kodları görebiliriz. Yaratılan kodlar adı üzerinde Generated_Code klasörü içerisinde bulunmakta. :)

GeneratedCode

Burada yaratılan kodu incelediğimizde bütün kodlar aslında ASP.NET tarafında bulunan Domain Service Class’ın bulunduğu namespace içerisinde bulunmaktadır. Böylece biz developerlara doğrudan Silverlight uygulaması içerisinden ASP.NET sunucu uygulamasına erişiyor hissi vermektedir. :)

Evet arkadaşlar daha fazla uzatmadan teorik kısımdan şimdi pratik kısma geçiyoruz ve uygulamamıza başlıyoruz.

Create İşlemi

Örnek kodlarımıza ilk olarak Category tipini yaratarak başlıyor olacağız. İlk olarak CreateCategory isimli metodumuzu yaratıyoruz ve bu metot içerisinde bir adet Category tipini örnekleyerek daha sonra WCF RIA Service’ini kullanarakta nesnemizi veritabanına ekliyoruz. Şimdi ilk olarak Category tipini örnekleyelim.

 
Category category = new Category()
            {
                CategoryName="Bisiklet",
                Description="Bisiklet Kategorisi",
            };

Daha sonra ise yarattığımız nesneyi WCF RIA Service üzerinden göndermemiz için tıpkı bir normal web servisini kullandığımız gibi WCF RIA Service’I için de bir proxy yaratmalıyız. Bunun için de NorthwindDomainContext tipini kullanıyor olacağız. Daha sonra ise bu tip üzerinde bulunan Categories propertysini kullanarak yarattığımız category isimli nesneyi ekliyor olacağız.

 NorthwindDomainContext context = new NorthwindDomainContext();
            context.Categories.Add(category);
            context.SubmitChanges();

CreateCategory ismini verdiğimiz metodun tamamı ise şu şekilde olacak.

NorthwindDomainContext context = new NorthwindDomainContext();
        private void CreateCategory()
        {
            Category category = new Category()
            {
                CategoryName="Bisiklet",
                Description="Bisiklet Kategorisi",
            };
            context.Categories.Add(category);
            context.SubmitChanges();
        }
 

Read İşlemi

WCF RIA Serviceleri üzerinden okuma işlemleri yapmak için de LoadOperation isimli tipten yararlanıyor olacağız. LoadOperation tipi WCF RIA Serviceleri üzerinde bir takım veri çekme işlemleri için bizlere oldukça yardımcı olmakta. Yazdığımız sorguların sunucu tarafına gönderilmesi ve sunucudan döndürülen değerlerin de Silverlight uygulaması tarafından kullanılmasını doğrudan LoadOperation tipi üzerinden gerçekleştiriyoruz. Buradaki örneğimizde ise GetCategories isimli bir metot yazarak veritabanımızda bulunan tüm Kategorileri Silverlight tarafına çekiyor olacağız.

        private void GetCategories()
        {
            var query = context.GetCategoriesQuery();
            LoadOperation<Category> loadOp = context.Load<Category>(query);
            loadOp.Completed += (sender, e) =>
                {
                    if (!loadOp.HasError)
                    {
                        dataGrid1.ItemsSource= loadOp.Entities;
                    }
                    else
                    {
                        MessageBox.Show(loadOp.Error.Message);
                        loadOp.MarkErrorAsHandled();
                    }
                };
        }

Yazdığımız metodu incelersek öncelikle sunucuya göndereceğimiz sorguyu alarak işleme başlıyoruz. Çünkü NorthwindDomainContext tipi üzerinden GetCategories isimli sorguyu göndereceğimizi bildirmemiz gerekmekte. Daha sonra ise bu tip üzerindeki Load metodunu kullanarak sorgunun sunucuya gönderilmesini ve sunucudan da sonuçların alınmasını sağlıyoruz. Lambda ifadesi ile Completed eventine basit bir handler yazarak  ta çağrım sırasında herhangi bir problem olup olmadığını anlayabilir eğer bir hata yoksa sonucu bir veri görüntüleme kontrolüne (örneğimizde DataGrid kontrolüne) bağlıyoruz.

Burada sunucuya gönderdiğimiz sorguları değiştirme imkanına da sahibiz. Örneğin CategoryID’si mesela 3 olan Kategori nesnesini elde etmek ilgili  sorguyu Silverlight tarafında da yazıp sunucuya gönderebiliriz.

            var query = context.GetCategoriesQuery();
            var querybyId = from category in query
                            where category.CategoryID == 3
                            select category;
            LoadOperation<Category> loadOp = context.Load<Category>(querybyId);

Bu işlemi sunucu tarafında CategoryID’sini parametre olarak alan ve Category tipinden bir sonuç döndüren bir metot yazarakta gerçekleştirebilirdik. Ancak bu çeşitlilikten de anlayabileceğiniz gibi WCF RIA Services’ın pek çok kuvvetli ve alternatifli bir çözüm olduğunu görmekteyiz.

Update ve Delete İşlemleri

WCF RIA Servicelerinde Delete işlemi de Insert işlemine oldukça benzemekte. Silmek istediğimiz entityi doğrudan context üzerinden Remove metoduna vererek entityi veritabanımızdan silebiliriz. Update işlemi için de entity üzerinde değişiklikleri yaptıktan sonra context üzerinden SubmitChanges metodunu çağırıyoruz.

         context.Categories.Remove(category);
            context.SubmitChanges();
 

Yazımızın sonuna gelirken şu ana kadar WCF RIA Serviceleri üzerinden Create, Read, Update ve Delete işlemlerini incelemiş olduk. Bir sonraki yazımızda görüşmek üzere arkadaşlar…

Hoşçakalın…

Tags:  
Categories:   Silverlight
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Yorumlar RSSRSS Yorum Takibi
Share