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…