2 using Tizen.NUI.Binding.Internals;
3 using Tizen.NUI.Binding;
6 using Tizen.NUI.EXaml.Build.Tasks;
8 namespace Tizen.NUI.Xaml
10 [ContentProperty("Path")]
11 [AcceptEmptyServiceProvider]
12 internal sealed class BindingExtension : IMarkupExtension<BindingBase>
14 public string Path { get; set; } = Tizen.NUI.Binding.Binding.SelfPath;
15 public BindingMode Mode { get; set; } = BindingMode.Default;
17 public EXamlCreateObject ModeInEXaml { get; set; } = null;
19 public object Converter { get; set; }
21 public object ConverterParameter { get; set; }
23 public string StringFormat { get; set; }
25 public object Source { get; set; }
27 public string UpdateSourceEventName { get; set; }
29 public object TargetNullValue { get; set; }
31 public object FallbackValue { get; set; }
33 public TypedBindingBase TypedBinding { get; set; }
35 public EXamlCreateObject ProvideValue(EXamlContext context, ModuleDefinition module)
37 if (TypedBinding == null)
39 var newTypeRef = module.ImportReference(typeof(Tizen.NUI.Binding.Binding));
40 return new EXamlCreateObject(context, null, newTypeRef, new object[] { Path, ModeInEXaml, Converter, ConverterParameter, StringFormat, Source });
44 throw new Exception("TypedBinding should not be not null");
45 //TypedBinding.Mode = Mode;
46 //TypedBinding.Converter = Converter;
47 //TypedBinding.ConverterParameter = ConverterParameter;
48 //TypedBinding.StringFormat = StringFormat;
49 //TypedBinding.Source = Source;
50 //TypedBinding.UpdateSourceEventName = UpdateSourceEventName;
51 //TypedBinding.FallbackValue = FallbackValue;
52 //TypedBinding.TargetNullValue = TargetNullValue;
53 //return TypedBinding;
57 BindingBase IMarkupExtension<BindingBase>.ProvideValue(IServiceProvider serviceProvider)
59 if (TypedBinding == null)
60 return new Tizen.NUI.Binding.Binding(Path, Mode, Converter as IValueConverter, ConverterParameter, StringFormat, Source)
62 UpdateSourceEventName = UpdateSourceEventName,
63 FallbackValue = FallbackValue,
64 TargetNullValue = TargetNullValue,
67 TypedBinding.Mode = Mode;
68 TypedBinding.Converter = Converter as IValueConverter;
69 TypedBinding.ConverterParameter = ConverterParameter;
70 TypedBinding.StringFormat = StringFormat;
71 TypedBinding.Source = Source;
72 TypedBinding.UpdateSourceEventName = UpdateSourceEventName;
73 TypedBinding.FallbackValue = FallbackValue;
74 TypedBinding.TargetNullValue = TargetNullValue;
78 object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
80 return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider);