Windows Phone’da Bir DependencyProperty Değiştiğinde Haberdar Olma

WPF’de bir DependencyProperty’nin PropertyMetadata’sı üzerinde işlem yapmak istediğimizde DependencyPropertyDescriptor sınıfı hayatımızı kurtarırdı. Ancak bu sınıf Windows Phone’da yok. Bu çoğu zaman bunu hissetmezsiniz. Ancak ya bir DependencyProperty değiştiğinde haberdar olmanız gerekiyorsa?

Bunu bir hack yardımı ile yapabilirsiniz.

public static void Register(DependencyObject target, string propertyPath, DependencyPropertyChangedEventHandler dependencyPropertyChanged)
{
    Binding binding = new Binding(propertyPath) { Source = target };

    var property = DependencyProperty.RegisterAttached("_" + Guid.NewGuid().ToString("N"), typeof(object), typeof(DependencyObject),
        new PropertyMetadata
        (
            (o, e) =>
            {
                o.Dispatcher.BeginInvoke(() => dependencyPropertyChanged.Invoke(o, e));
            }
        )
    );

    BindingOperations.SetBinding(target, property, binding);
}

Örnek projeyi ve kodlara buradan ulaşabilirsiniz.

Bu yazı çok kısa oldu sanırım, daha sonra görüşmek üzere…

Hakkımda

Yazar, yazmadığı zamanlarda yazmayı özlemeyi sevmektedir. Elektronik Mühendisliğinde okusa da okulu uzatmış bulunmaktadır. IQ'sunu merak etmekle beraber, sizinkini daha çok merak etmektedir.