[NUI]Add xaml support for nui and nui xaml test sample (#230)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / Xaml / MarkupExtensions / BindingExtension.cs
1 using System;
2 using Tizen.NUI.Internals;
3 using Tizen.NUI.Binding;
4
5 namespace Tizen.NUI.Xaml
6 {
7         [ContentProperty("Path")]
8         [AcceptEmptyServiceProvider]
9         internal sealed class BindingExtension : IMarkupExtension<BindingBase>
10         {
11                 public BindingExtension()
12                 {
13                         Mode = BindingMode.Default;
14                         Path = Tizen.NUI.Binding.Binding.SelfPath;
15                 }
16
17                 public string Path { get; set; }
18
19                 public BindingMode Mode { get; set; }
20
21                 public IValueConverter Converter { get; set; }
22
23                 public object ConverterParameter { get; set; }
24
25                 public string StringFormat { get; set; }
26
27                 public object Source { get; set; }
28
29                 public string UpdateSourceEventName { get; set; }
30
31                 public TypedBindingBase TypedBinding { get; set; }
32
33                 BindingBase IMarkupExtension<BindingBase>.ProvideValue(IServiceProvider serviceProvider)
34                 {
35                         if (TypedBinding == null)
36                                 return new Tizen.NUI.Binding.Binding(Path, Mode, Converter, ConverterParameter, StringFormat, Source) { UpdateSourceEventName = UpdateSourceEventName };
37
38                         TypedBinding.Mode = Mode;
39                         TypedBinding.Converter = Converter;
40                         TypedBinding.ConverterParameter = ConverterParameter;
41                         TypedBinding.StringFormat = StringFormat;
42                         TypedBinding.Source = Source;
43                         TypedBinding.UpdateSourceEventName = UpdateSourceEventName;
44                         return TypedBinding;
45                 }
46
47                 object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
48                 {
49                         return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider);
50                 }
51         }
52 }