public override NativeBinding ProvideNativeBinding(IShibaContext context, ShibaExtension value) { var dataContextPath = nameof(context.DataContext); var targetPath = value.Value; var path = dataContextPath; return(new NativeBinding { Converter = Singleton <JsonConverter> .Instance, ConverterParameter = targetPath, Source = context, Path = new PropertyPath(path), UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); }
public virtual NativeBinding ProvideNativeBinding(IShibaContext context, ShibaExtension value) { var dataContextPath = nameof(context.DataContext); var targetPath = value.Value; var path = string.IsNullOrEmpty(targetPath) ? dataContextPath : $"{dataContextPath}.{targetPath}"; return(new NativeBinding { Source = context, Path = new PropertyPath(path), UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); }
private object Visit(ShibaExtension item, IShibaContext context) { var executor = ShibaApp.Instance.Configuration.ExtensionExecutors.FirstOrDefault(it => it.Name == item.Type); if (executor != null) { var value = executor.ProvideValue(context, item); if (string.IsNullOrEmpty(item.ScriptName)) { return(value); } var func = new ShibaFunction(item.ScriptName) { Parameters = { item } }; if (value is NativeBinding binding) { if (binding.Converter != null) { binding.ConverterParameter = new ShibaConverterParameter { InnerConverter = binding.Converter, InnerParameter = binding.ConverterParameter, Function = func } } ; else { binding.ConverterParameter = func; } binding.Converter = Singleton <SingleBindingFunctionConverter> .Instance; return(binding); } return(new NativeBinding { ConverterParameter = Singleton <SingleBindingShibaFunctionExecutor> .Instance.Execute(func, item), Converter = Singleton <RawDataConverter> .Instance }); } throw new NotImplementedException(); }
public object ProvideValue(IShibaContext context, ShibaExtension value) { return(ProvideNativeBinding(context, value)); }
public object ProvideValue(IShibaContext context, ShibaExtension value) { return(Application.Current.Resources.ContainsKey(value.Value) ? Application.Current.Resources[value.Value] : null); }
protected override object GetValueFromDataContext(ShibaExtension binding, object dataContext) { return(dataContext); }
protected virtual object GetValueFromDataContext(ShibaExtension extension, object dataContext) { return(ShibaApp.Instance.Configuration.ExtensionExecutors .FirstOrDefault(it => it.Name == extension.Type)?.ProvideValue(null, extension)); }