Visual Studio 2010 Türkçe Dil Paketi Yayınlandı
6 Temmuz,2010

 

Herkese merhabalar,

Birkaç gün önce Visual Studio 2010 için Türkçe dil paketi yayınlandı.Bu dil paketi şu an için sadece Visual Studio 2010 Professional’ın  İngilizce sürümünün üzerine yüklenebilen bir eklentidir.Eklenti yüklendikten sonra ingilizce ve türkçe dil seçimini yapabilmeniz mümkün.Bu dil paketinin diğer bir özelliği ise İstanbul Teknik Üniversitesi iş birliği ile hazırlanmış olmasıdır.Ayrıntılı bilgi ve indirme için burayı ziyaret edebilirsiniz.

Kolay gelsin.

 
Kategoriler: Visual Studio

WPF-Attached Property Nedir?
4 Temmuz,2010

Sıradan property’lerin yanı sıra XAML,pek çok kontrolün uygulayabildiği fakat farklı bir sınıfta tanımlanan attached property adında bir konsepti de içerisinde barındırmaktadır. WPF uygulamalarında attached property’ler daha çok kontrollerin düzeni(layout)  için kullanılmaktadır.

Nasıl Çalışır?

Her kontrolün kendine has belirli property kümesi vardır.Örneğin bir textbox’ın fontu,metin rengi ve text içeriği gibi özellikleri vardır.Bu özellikler FontFamily,Foreground ve Text gibi propertyler tarafından set edilebilmektedir.Bunun yanı sıra bir kontrolü bir konteynırın içine yerleştirdiğimizde, kontrol konteynırın tipine bağlı olarak ek özellikler kazanır.Örneğin bir textbox’ı bir Canvas’ın içerisini yerleştirdiğimizde sol üst noktaya göre pozisyonunu ayarlayabiliyor olmalıyız.Bu ekstra detaylar attached property ‘ler kullanılarak ayarlanabilmektedir.

Attached property’ler isimlendirilmesi daima  DefiningType.PropertyName şeklinde iki kısımdan oluşur.Bu ikili isimlendirme sözdizimi XAML Parser’ın  normal property’ler ile attached property’leri ayırt etmesini sağlar.

<Canvas> 

<TextBox Canvas.Top="10"/> 

<TextBox Canvas.Top="40"/> 

<TextBox Canvas.Top="70"/>

</Canvas> 

Attached property’ler aslında gerçek property değildirler.Onlar özünde method çağrımlarına çevrilmişlerdir.XAML parser DefiningType.SetPropertyName() formundaki static bir metodu çağırır.Örneğin yukarıdaki kodumuzda DefiningType Canvas,Property’miz  de Top olduğu için xaml parser Canvas.SetTop() metodunu çağırır.

SetPropertyName()’i çağırırken xaml parser iki parametre geçirir:düzenlenen nesne ve belirlenen property değeridir.Örneğin textbox kontrolünde Canvas.Left özelliğini set ettiğimizde parser şu kodu çalıştırır:

Canvas.SetLeft(txtBox1,10);

Burada soldan uzaklık aslında uygulanan nesne üzerinde saklanmaktadır.Bu durumda property değer TextBox üzerinde saklanmaktadır.Çünkü tüm WPF kontrolleri gibi TextBox kontrolü de DependencyObject temel sınıfından türemiştir.Bilindiği gibi DependencyObject, dependency property’lerin sınırsız bir koleksiyonunu saklamak için tasarlanmıştır.Attached property’ler de dependency property’lerin özel bir tipidir.Belirtmem gereken bir husus da şudur.Aslında Canvas.SetLeft() metodu DependencyObject.SetValue() metodunun bir kısayoludur.Örneğin:

txtBox1.SetValue(Canvas.LeftProperty,10);

Attached property’ler WPF’in çekirdek bileşenleridir.Çok amaçlı genişletilebilir bir sistem gibi davranırlar.Örneğin Left property’sini attached property olarak tanımlayarak,bu property’nin herhangi bir kontrol ile kullanılabilmesini sağlamakla beraber esnek bir yapı oluşturmuş oluruz.

Kolay gelsin.  

Kategoriler: WPF

WPF-Binding Modlar
4 Temmuz,2010

Bu yazımda data binding işlemlerinde kullanılan binding modlar hakkında bilgi vermek istiyorum.Binding modları kullanarak kaynak ile hedef arasındaki veri akışını kontrol edebiliriz.Özellikle bazı durumlarda verilerimizin kaynaktan hedefe gibi tek yönlü akmasını isteriz.Aşağıdaki tabloda binding modların bir listesini ve hangi modun ne işe yaradığını bulabilirsiniz.

  

OneWay

OneWay mod tablodaki açıklamada da belirtildiği gibi tek yönlü bir veri akışı söz konusudur.Bu akış da kaynaktan hedefe doğrudur.Kaynak property de herhangi bir değişiklik olduğunda bu değişiklik hedef property eye de yansımaktadır.

TwoWay

En sık kullanılan modlardan birisidir.OneWay moda ek olarak  hedeften kaynağa veri akışı da sağlamaktadır.

OneTime

OneTime mod ise aslında bazı yerlerde çok kullanışlı olabilmektedir.Bu mod ile kaynaktan hedefe doğru sadece bir kez binding işlemi söz konusudur.

OneWayToSource

İsminden de anlaşılacağı gibi OneWay modun tam tersi işlemi yerine getirmektedir.Hedef property de  olan bir değişiklik kaynağa yansıtılmaktadır.

<TextBox x:Name="txtSource"/>

<TextBox Text="{Binding ElementName=txtName,Path=Text,Mode=OneWay}"/> 

Yukarıdaki kodda binding modların kullanılışını gösteren bir örnek bulunmaktadır.Buradaki kodda dikkat ederseniz OneWay  mod kullanılmış.Yani üstteki TextBox’a girilen metnin aynısı binding işlemleri sayesinde alttaki TextBox’ta da görülecektir.Fakat alttaki kutucukta yapılan değişiklik kaynak TextBox’ın Text property’sinde herhangi bir değişikliğe sebep olmayacaktır. Aşağıdaki şekilde kolay bir şekilde modlar arasındaki farkları görebilirsiniz.

   

Kod Tarafında Binding İşlemi 

Binding binding = new Binding();
binding.Source = txtSource;
binding.Path = new PropertyPath("Text");
binding.Mode = BindingMode.OneWay;
txtTarget.SetBinding(TextBlock.TextProperty, binding);

 

Yukarıda bahsettiğim modlar arasındaki farkı daha iyi anlamanız için yukarıdaki örnek kodun modlarını değiştirmenizi tavsiye ederim.

Hepinize kolay gelsin.

Etiketler: ,
Kategoriler: WPF