| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | using System;#if XFORMSusing Xamarin.Forms;using DependencyProperty = Xamarin.Forms.BindableProperty;#elif WinRTusing Windows.UI.Xaml;#elseusing System.Windows;#endifnamespace Caliburn.Micro{    /// <summary>    /// Class that abstracts the differences in creating a DepedencyProperty / BindableProperty on the different platforms.    /// </summary>    public static class DependencyPropertyHelper    {        /// <summary>        /// Register an attached dependency / bindable property        /// </summary>        /// <param name="name">The property name</param>        /// <param name="propertyType">The property type</param>        /// <param name="ownerType">The owner type</param>        /// <param name="defaultValue">The default value</param>        /// <param name="propertyChangedCallback">Callback to executed on property changed</param>        /// <returns>The registred attached dependecy property</returns>        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        }        /// <summary>        /// Register a dependency / bindable property        /// </summary>        /// <param name="name">The property name</param>        /// <param name="propertyType">The property type</param>        /// <param name="ownerType">The owner type</param>        /// <param name="defaultValue">The default value</param>        /// <param name="propertyChangedCallback">Callback to executed on property changed</param>        /// <returns>The registred dependecy property</returns>        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        }    }}
 |