Hazır Dependency Property'leri kullanmak

0 dakikada yazıldı

37867 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.