using System; #if XFORMS using Xamarin.Forms; using DependencyProperty = Xamarin.Forms.BindableProperty; #elif WinRT using Windows.UI.Xaml; #else using System.Windows; #endif namespace Caliburn.Micro { /// /// Class that abstracts the differences in creating a DepedencyProperty / BindableProperty on the different platforms. /// public static class DependencyPropertyHelper { /// /// Register an attached dependency / bindable property /// /// The property name /// The property type /// The owner type /// The default value /// Callback to executed on property changed /// The registred attached dependecy property public static DependencyProperty RegisterAttached(string name, Type propertyType, Type ownerType, object defaultValue = null, PropertyChangedCallback propertyChangedCallback = null) { #if XFORMS return DependencyProperty.CreateAttached(name, propertyType, ownerType, defaultValue, propertyChanged: (obj, oldValue, newValue) => { if (propertyChangedCallback != null) propertyChangedCallback(obj, new DependencyPropertyChangedEventArgs(newValue, oldValue, null)); }); #else return DependencyProperty.RegisterAttached(name, propertyType, ownerType, new PropertyMetadata(defaultValue, propertyChangedCallback)); #endif } /// /// Register a dependency / bindable property /// /// The property name /// The property type /// The owner type /// The default value /// Callback to executed on property changed /// The registred dependecy property public static DependencyProperty Register(string name, Type propertyType, Type ownerType, object defaultValue = null, PropertyChangedCallback propertyChangedCallback = null) { #if XFORMS return DependencyProperty.Create(name, propertyType, ownerType, defaultValue, propertyChanged: (obj, oldValue, newValue) => { if (propertyChangedCallback != null) propertyChangedCallback(obj, new DependencyPropertyChangedEventArgs(newValue, oldValue, null)); }); #else return DependencyProperty.Register(name, propertyType, ownerType, new PropertyMetadata(defaultValue, propertyChangedCallback)); #endif } } }