Hazır Dependency Property'leri kullanmak

0 dakikada yazıldı

37999 defa okundu

Düzenle

İki gündür DP (Dependency Property)'lerle
uğraşıyoruz

:) Artık kabaca ne olduklarını ve nasıl kullanıldıklarını anladık. Fakat
şu ana kadar hep biz kendi DP'lerimizi yarattık peki ya var olanlar?
Aslında hali hazırda var olan DP'leri aynı Framework'ün iç yapısının
kullandığı gibi kullanabiliyor olmak büyük kolaylıklar sağlayabilir.
Gelin basit bir örnekle var olan DP'lere nasıl el atabileceğimze göz
atalım.

Bu örneğimizde yapmak istediğimiz şey basit bir WPF uygulamasının ana
ekranının yüksekliği değiştiğinden bundan haberdar olmak. Biz biliyoruz
ki Window nesnesinin Height Property'si aslında bir DP! Bu durumda eğer
bu Property'nin Callback'ine ataçlanabilirsek değişikliklerden
rahatlıkla haberdar olabiliriz.

[C#]

        DependencyPropertyDescriptor HeightRef = DependencyPropertyDescriptor.
                FromProperty(Window.HeightProperty, typeof(Window)); 

İlk olarak yukarıdaki gibi hemen Property üzerinden Descriptor'ı almak
için yine DependencyPropertyDescription altındaki static/shared bir
metodu kullanıyoruz. Almak istediğimiz Property'nin PropertyPath'ini
verdikten sonra DP'nin sahibi nesnenin tipini de aktarıyoruz. Böylece
artık elimizde Descriptor var.

[C#]

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            if (HeightRef != null)
            {
                HeightRef.AddValueChanged(this , delegate
                {
                    TXT.Text = this.Height.ToString();
                });
            } 
        }

Uygulama açıldığında hemen Descripor'ımız hayatta mı diye kontrol
ettikten sonra Descriptor üzerinden AddValueChanged'e yeni bir event
listener veriyoruz. Böylece artık binding aracılığı ile herhangi bir
şekilde bu Property değiştiğinde bizim de durumdan haberimiz olacak.

Bu kodu çalıştırdığınızda uygulamanın ana ekranını resize ettikçe yeni
yüksekliğin hep size raporlandığını görebilirsiniz.

Hepinize kolay gelsin.