private static void ExtendDefaultGen(SolidProperty property, Func <Style, object> getValue) { // Overrides the property defaults of some properties so the style can define the default value. var prevGen = property.Metadata.DefaultGenerator; property.Metadata.DefaultGenerator = (obj, prop) => { if (obj is State) { var state = (State)obj; return(getValue(state.style)); } return(prevGen(obj, prop)); }; }
protected static void ExtendDefaultGen(SolidProperty property, Func <State, object> getValue) { // Overrides the property defaults of some properties so the style can define the default value. var prevGen = property.Metadata.DefaultGenerator; property.Metadata.DefaultGenerator = (obj, prop) => { if (obj is UIWidget) { var widget = (UIWidget)obj; var state = widget?.Style?.GetState(widget.GetCurrentStyleKey()); if (state != null) { return(getValue(state)); } } return(prevGen(obj, prop)); }; }
protected override void SetProperty(T obj, MarkupProperty markupProperty) { var property = SolidProperty.GetProperty(obj.GetType(), markupProperty.Name); if (property == null) { base.SetProperty(obj, markupProperty); return; } if (markupProperty.Type == MarkupPropertyType.Binding) { SolidProperty.Bind(property, obj, markupProperty.Value); return; } if (property.Metadata.IsExported == false) { throw new NotSupportedException("Setting a non-exported property is not supported."); } property.SetValue(obj, ConvertPropertyType(property.PropertyType, markupProperty)); }