예제 #1
0
파일: ViewMapper.cs 프로젝트: ShibaJS/Shiba
        protected virtual TNativeView Map(ShibaView view, IShibaContext context)
        {
            var target = CreateNativeView(context);

            if (view.DefaultValue != null && DefaultPropertyMap != null && HasDefaultProperty)
            {
                SetValue(context, view.DefaultValue, DefaultPropertyMap, target);
            }

            foreach (var property in view.Properties)
            {
                var propertyCache = _propertyCache.Value.LastOrDefault(it => it.Name == property.Name);
                if (propertyCache != null)
                {
                    SetValue(context, property.Value, propertyCache, target);
                }
                else
                {
                    var eventCache = _eventCache.Value.LastOrDefault(it => it.Name == property.Name);
                    if (eventCache != null && property.Value is string name)
                    {
                        eventCache.Setter.Invoke(target, name, context);
                    }
                }
            }

            return(target);
        }
예제 #2
0
파일: Extensions.cs 프로젝트: ShibaJS/Shiba
        public static DataTemplate ToDataTemplate(this ShibaView view)
        {
            throw new NotImplementedException();
            //var layoutString = view.ToString();
            //var templateString =
            //    $"<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><views:{typeof(ShibaHost).Name} xmlns:views=\"using:{typeof(ShibaHost).Namespace}\" DataContext=\"{{Binding}}\" Layout={JsonConvert.SerializeObject(layoutString)}/></DataTemplate>";
            //var template = XamlReader.Load(templateString) as DataTemplate;

            //return template;
        }
예제 #3
0
파일: ViewMapper.cs 프로젝트: ShibaJS/Shiba
 object IViewMapper.Map(ShibaView view, IShibaContext context)
 {
     return(Map(view, context));
 }