public static Type FinalType(this DataTemplate dataTemplate)
        {
            return(dataTemplate.Get(() =>
            {
                var dataType = (Type)dataTemplate.DataType;



                if (dataTemplate.GenericArgument() == null)
                {
                    return dataType;
                }
                if (dataTemplate.GenericArgumentInnerArgument() == null)
                {
                    return dataType.CreateGenericType(dataTemplate.GenericArgument());
                }

                return dataType.CreateGenericType(
                    dataTemplate.GenericArgument().CreateGenericType(
                        dataTemplate.GenericArgumentInnerArgument()));
            }));
        }
 public static bool UseImage(this DataTemplate dataTemplate)
 {
     return(dataTemplate.Get <bool>());
 }
 public static bool IsValueProvider(this DataTemplate dataTemplate)
 {
     return(dataTemplate.Get <bool>());
 }
 public static Type GenericArgumentInnerArgument(this DataTemplate dataTemplate)
 {
     return(dataTemplate.Get <Type>());
 }
 public static bool IsReadOnly(this DataTemplate dataTemplate)
 {
     return(dataTemplate.Get <bool>());
 }
        //public static readonly DependencyProperty IsReadOnlyProperty = CreateAttached(GetIsReadOnly,false,OnIsReadOnlyChanged);

        //private static void OnIsReadOnlyChanged(DataTemplate dataTemplate, bool? oldValue, bool? newValue)
        //{
        //}

        public static Dictionary <Type, bool> MatchMap(this DataTemplate dataTemplate)
        {
            return(dataTemplate.Get(() => new Dictionary <Type, bool>()));
        }
 public static int Priority(this DataTemplate dataTemplate)
 {
     return(dataTemplate.Get <int>());
 }