Revert "[NUI] Change Color, Position2D, and etc properties to own only one instance"
authordongsug.song <dongsug.song@samsung.com>
Mon, 22 Nov 2021 06:57:34 +0000 (15:57 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Mon, 22 Nov 2021 07:07:17 +0000 (16:07 +0900)
This reverts commit e62db1769f32f7fa214b7def490cebf7e195fd79.

src/Tizen.NUI/src/public/BaseComponents/View.cs
src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs
src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs
src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs
src/Tizen.NUI/src/public/Common/Color.cs
src/Tizen.NUI/src/public/Common/Extents.cs
src/Tizen.NUI/src/public/Common/Position.cs
src/Tizen.NUI/src/public/Common/Position2D.cs
src/Tizen.NUI/src/public/Common/Size.cs
src/Tizen.NUI/src/public/Common/Size2D.cs

index 448bca8..67091da 100755 (executable)
@@ -52,19 +52,6 @@ namespace Tizen.NUI.BaseComponents
         private Constraint widthConstraint = null;
         private Constraint heightConstraint = null;
 
-        private Size2D internalMaximumSize = null;
-        private Size2D internalMinimumSize = null;
-        private Extents internalMargin = null;
-        private Extents internalPadding = null;
-        private Vector3 internalSizeModeFactor = null;
-        private Vector2 internalCellIndex = null;
-        private Color internalBackgroundColor = null;
-        private Color internalColor = null;
-        private Position internalPivotPoint = null;
-        private Position internalPosition = null;
-        private Position2D internalPosition2D = null;
-        private Vector3 internalScale = null;
-        private Size internalSize = null;
         private Size2D internalSize2D = null;
 
         static View()
@@ -337,7 +324,7 @@ namespace Tizen.NUI.BaseComponents
         /// </summary>
         /// <remarks>
         /// <para>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.BackgroundColor.X = 0.1f;) is possible.
         /// </para>
         /// <para>
         /// Animatable - This property can be animated using <c>Animation</c> class.
@@ -346,23 +333,13 @@ namespace Tizen.NUI.BaseComponents
         /// </code>
         /// </para>
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.BackgroundColor = new Color(0.5f, 0.1f, 0, 1);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.BackgroundColor.R = 0.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Color BackgroundColor
         {
             get
             {
-                return (Color)GetValue(BackgroundColorProperty);
+                Color temp = (Color)GetValue(BackgroundColorProperty);
+                return new Color(OnBackgroundColorChanged, temp.R, temp.G, temp.B, temp.A);
             }
             set
             {
@@ -755,26 +732,16 @@ namespace Tizen.NUI.BaseComponents
         /// The top-left cell this child occupies, if not set, the first available cell is used.
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.CellIndex.X = 0.1f;) is possible.
         /// Also, this property is for <see cref="TableView"/> class. Please use the property for the child position of <see cref="TableView"/>.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.CellIndex = new Vector2(1, 3);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.CellIndex.X = 1; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Vector2 CellIndex
         {
             get
             {
-                return (Vector2)GetValue(CellIndexProperty);
+                Vector2 temp = (Vector2)GetValue(CellIndexProperty);
+                return new Vector2(OnCellIndexChanged, temp.X, temp.Y);
             }
             set
             {
@@ -1017,19 +984,9 @@ namespace Tizen.NUI.BaseComponents
         /// The views default depth is the minimum of width and height.<br />
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
+        /// This NUI object (Size2D) typed property can be configured by multiple cascade setting. <br />
+        /// For example, this code ( view.Size2D.Width = 100; view.Size2D.Height = 100; ) is equivalent to this ( view.Size2D = new Size2D(100, 100); ). <br />
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Size2D = new Size2D(100, 200);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Size2D.Width = 100; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Size2D Size2D
         {
@@ -1097,25 +1054,16 @@ namespace Tizen.NUI.BaseComponents
         /// If the position inheritance is disabled, sets the world position.<br />
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
-        ///</remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Position2D = new Position2D(100, 200);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Position2D.X = 100; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
+        /// This NUI object (Position2D) typed property can be configured by multiple cascade setting. <br />
+        /// For example, this code ( view.Position2D.X = 100; view.Position2D.Y = 100; ) is equivalent to this ( view.Position2D = new Position2D(100, 100); ). <br />
+        /// </remarks>
         /// <since_tizen> 3 </since_tizen>
         public Position2D Position2D
         {
             get
             {
-                return (Position2D)GetValue(Position2DProperty);
+                Position2D temp = (Position2D)GetValue(Position2DProperty);
+                return new Position2D(OnPosition2DChanged, temp.X, temp.Y);
             }
             set
             {
@@ -1310,25 +1258,15 @@ namespace Tizen.NUI.BaseComponents
         /// <pre>The view has been initialized.</pre>
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
-        ///</remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.PivotPoint = PivotPoint.Center;
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.PivotPoint.X = 0.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
+        /// The property cascade chaining set is possible. For example, this (view.PivotPoint.X = 0.1f;) is possible.
+        /// </remarks>
         /// <since_tizen> 3 </since_tizen>
         public Position PivotPoint
         {
             get
             {
-                return (Position)GetValue(PivotPointProperty);
+                Position tmp = (Position)GetValue(PivotPointProperty);
+                return new Position(OnPivotPointChanged, tmp.X, tmp.Y, tmp.Z);
             }
             set
             {
@@ -1399,25 +1337,15 @@ namespace Tizen.NUI.BaseComponents
         /// animation.AnimateTo(view, "Position", new Position(50, 0));
         /// </code>
         /// </para>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Position.X = 1.0f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Position = new Position(100, 200.5f, 0);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Position.Y = 200.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Position Position
         {
             get
             {
-                return (Position)GetValue(PositionProperty);
+                Position tmp = (Position)GetValue(PositionProperty);
+                return new Position(OnPositionChanged, tmp.X, tmp.Y, tmp.Z);
             }
             set
             {
@@ -1572,25 +1500,15 @@ namespace Tizen.NUI.BaseComponents
         /// animation.AnimateTo(view, "Scale", new Vector3(1.5f, 1.5f, 1.0f));
         /// </code>
         /// </para>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Scale.X = 0.1f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Scale = new Vector3(1.5f, 2.0f, 1.0f);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Scale.Width = 1.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Vector3 Scale
         {
             get
             {
-                return (Vector3)GetValue(ScaleProperty);
+                Vector3 temp = (Vector3)GetValue(ScaleProperty);
+                return new Vector3(OnScaleChanged, temp.X, temp.Y, temp.Z);
             }
             set
             {
@@ -1873,25 +1791,15 @@ namespace Tizen.NUI.BaseComponents
         /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicyType.<br />
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.DecorationBoundingBox.X = 0.1f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var text = new TextField();
-        /// text.SizeModeFactor = new Vector3(1.0f, 0.45f, 1.0f);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// text.SizeModeFactor.Width = 1.0f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Vector3 SizeModeFactor
         {
             get
             {
-                return (Vector3)GetValue(SizeModeFactorProperty);
+                Vector3 temp = (Vector3)GetValue(SizeModeFactorProperty);
+                return new Vector3(OnSizeModeFactorChanged, temp.X, temp.Y, temp.Z);
             }
             set
             {
@@ -1990,19 +1898,8 @@ namespace Tizen.NUI.BaseComponents
         /// Gets or sets the padding for use in layout.
         /// </summary>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Padding.X = 0.1f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Padding = new Extents(5, 5, 5, 5);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Padding.Start = 5; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 5 </since_tizen>
         public Extents Padding
         {
@@ -2015,7 +1912,8 @@ namespace Tizen.NUI.BaseComponents
                 }
                 else
                 {
-                    return (Extents)GetValue(PaddingProperty);
+                    Extents temp = (Extents)GetValue(PaddingProperty);
+                    return new Extents(OnPaddingChanged, temp.Start, temp.End, temp.Top, temp.Bottom);
                 }
                 // Two return points to prevent creating a zeroed Extent native object before assignment
             }
@@ -2046,25 +1944,15 @@ namespace Tizen.NUI.BaseComponents
         /// </summary>
         /// <exception cref="ArgumentNullException"> Thrown when value is null. </exception>
         /// <remarks>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.MinimumSize.Width = 1;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.MinimumSize = new Size2D(100, 200);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.MinimumSize.Width = 100; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 3 </since_tizen>
         public Size2D MinimumSize
         {
             get
             {
-                return (Size2D)GetValue(MinimumSizeProperty);
+                Size2D tmp = (Size2D)GetValue(MinimumSizeProperty);
+                return new Size2D(OnMinimumSizeChanged, tmp.Width, tmp.Height);
             }
             set
             {
@@ -2088,23 +1976,16 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Gets or sets the maximum size the view can be assigned in size negotiation.
         /// </summary>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.MaximumSize = new Size2D(100, 200);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.MaximumSize.Height = 200; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
+        /// <remarks>
+        /// The property cascade chaining set is possible. For example, this (view.MaximumSize.Width = 1;) is possible.
+        /// </remarks>
         /// <since_tizen> 3 </since_tizen>
         public Size2D MaximumSize
         {
             get
             {
-                return (Size2D)GetValue(MaximumSizeProperty);
+                Size2D tmp = (Size2D)GetValue(MaximumSizeProperty);
+                return new Size2D(OnMaximumSizeChanged, tmp.Width, tmp.Height);
             }
             set
             {
@@ -2214,25 +2095,15 @@ namespace Tizen.NUI.BaseComponents
         /// animation.AnimateTo(view, "Size", new Size(100, 100));
         /// </code>
         /// </para>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Size.Width = 1.0f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Size = new Size(100.5f, 200, 0);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Size.Width = 100.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 5 </since_tizen>
         public Size Size
         {
             get
             {
-                return (Size)GetValue(SizeProperty);
+                Size tmp = (Size)GetValue(SizeProperty);
+                return new Size(OnSizeChanged, tmp.Width, tmp.Height, tmp.Depth);
             }
             set
             {
@@ -2318,19 +2189,8 @@ namespace Tizen.NUI.BaseComponents
         /// <remarks>
         /// Margin property is supported by Layout algorithms and containers.
         /// Please Set Layout if you want to use Margin property.
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Margin.X = 0.1f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Margin = new Extents(10, 5, 15, 20);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Margin.Top = 15; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
         /// <since_tizen> 4 </since_tizen>
         public Extents Margin
         {
@@ -2344,7 +2204,8 @@ namespace Tizen.NUI.BaseComponents
                 else
                 {
                     // If Layout not set then return margin stored in View.
-                    return (Extents)GetValue(MarginProperty);
+                    Extents temp = (Extents)GetValue(MarginProperty);
+                    return new Extents(OnMarginChanged, temp.Start, temp.End, temp.Top, temp.Bottom);
                 }
                 // Two return points to prevent creating a zeroed Extent native object before assignment
             }
@@ -2556,25 +2417,16 @@ namespace Tizen.NUI.BaseComponents
         /// <para>
         /// Animatable - This property can be animated using <c>Animation</c> class.
         /// </para>
-        /// The property cascade chaining set is not recommended.
+        /// The property cascade chaining set is possible. For example, this (view.Color.X = 0.1f;) is possible.
         /// </remarks>
-        /// <example>
-        /// This way is recommended for setting the property
-        /// <code>
-        /// var view = new View();
-        /// view.Color = new Color(0.5f, 0.2f, 0.1f, 0.5f);
-        /// </code>
-        /// This way to set the property is prohibited
-        /// <code>
-        /// view.Color.A = 0.5f; //This does not guarantee a proper operation
-        /// </code>
-        /// </example>
+        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
         public Color Color
         {
             get
             {
-                return (Color)GetValue(ColorProperty);
+                Color temp = (Color)GetValue(ColorProperty);
+                return new Color(OnColorChanged, temp.R, temp.G, temp.B, temp.A);
             }
             set
             {
index c0411b0..38be66e 100755 (executable)
@@ -15,7 +15,6 @@
  *
  */
 
-using global::System;
 using System.ComponentModel;
 using Tizen.NUI.Binding;
 
@@ -86,124 +85,97 @@ namespace Tizen.NUI.BaseComponents
         /// BackgroundColorProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
+        public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
 
-                view.themeData?.selectorData?.ClearBackground(view);
+            view.themeData?.selectorData?.ClearBackground(view);
 
-                if (newValue is Selector<Color> selector)
-                {
-                    if (selector.HasAll()) view.SetBackgroundColor(selector.All);
-                    else view.EnsureSelectorData().BackgroundColor = new TriggerableSelector<Color>(view, selector, view.SetBackgroundColor, true);
-                }
-                else
-                {
-                    view.SetBackgroundColor((Color)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+            if (newValue is Selector<Color> selector)
             {
-                var view = (View)bindable;
-
-                if (view.internalBackgroundColor == null)
-                {
-                    view.internalBackgroundColor = new Color(view.OnBackgroundColorChanged, 0, 0, 0, 0);
-                }
-
-                PropertyMap background = view.Background;
-                int visualType = 0;
-                background.Find(Visual.Property.Type)?.Get(out visualType);
-                if (visualType == (int)Visual.Type.Color)
-                {
-                    background.Find(ColorVisualProperty.MixColor)?.Get(view.internalBackgroundColor);
-                }
-
-                background?.Dispose();
-                background = null;
+                if (selector.HasAll()) view.SetBackgroundColor(selector.All);
+                else view.EnsureSelectorData().BackgroundColor = new TriggerableSelector<Color>(view, selector, view.SetBackgroundColor, true);
+            }
+            else
+            {
+                view.SetBackgroundColor((Color)newValue);
+            }
+        }),
+        defaultValueCreator: (bindable) =>
+        {
+            var view = (View)bindable;
+            Color backgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
 
-                return view.internalBackgroundColor;
+            Tizen.NUI.PropertyMap background = view.Background;
+            int visualType = 0;
+            background.Find(Visual.Property.Type)?.Get(out visualType);
+            if (visualType == (int)Visual.Type.Color)
+            {
+                background.Find(ColorVisualProperty.MixColor)?.Get(backgroundColor);
             }
-        );
+
+            return backgroundColor;
+        });
 
         /// <summary>
         /// ColorProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty ColorProperty = BindableProperty.Create(nameof(Color), typeof(Color), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
+        public static readonly BindableProperty ColorProperty = BindableProperty.Create(nameof(Color), typeof(Color), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
 
-                view.themeData?.selectorData?.Color?.Reset(view);
+            view.themeData?.selectorData?.Color?.Reset(view);
 
-                if (newValue is Selector<Color> selector)
-                {
-                    if (selector.HasAll()) view.SetColor(selector.All);
-                    else view.EnsureSelectorData().Color = new TriggerableSelector<Color>(view, selector, view.SetColor, true);
-                }
-                else
-                {
-                    view.SetColor((Color)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+            if (newValue is Selector<Color> selector)
             {
-                var view = (View)bindable;
-                var tmpProperty = view.GetProperty(Interop.ActorProperty.ColorGet());
-
-                if (view.internalColor == null)
-                {
-                    view.internalColor = new Color(view.OnColorChanged, 0, 0, 0, 0);
-                }
-
-                tmpProperty?.Get(view.internalColor);
-                tmpProperty?.Dispose();
-
-                return view.internalColor;
+                if (selector.HasAll()) view.SetColor(selector.All);
+                else view.EnsureSelectorData().Color = new TriggerableSelector<Color>(view, selector, view.SetColor, true);
             }
-        );
-
+            else
+            {
+                view.SetColor((Color)newValue);
+            }
+        },
+        defaultValueCreator: (bindable) =>
+        {
+            var view = (View)bindable;
+            Color color = new Color(0.0f, 0.0f, 0.0f, 0.0f);
+            view.GetProperty(Interop.ActorProperty.ColorGet()).Get(color);
+            return color;
+        });
         /// <summary> BackgroundImageProperty </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create(nameof(BackgroundImage), typeof(string), typeof(View), default(string),
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-
-                if (view.themeData?.selectorData != null)
-                {
-                    view.themeData.selectorData.BackgroundColor?.Reset(view);
-                    view.themeData.selectorData.BackgroundImage?.Reset(view);
-                }
+        public static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create(nameof(BackgroundImage), typeof(string), typeof(View), default(string), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
 
-                if (newValue is Selector<string> selector)
-                {
-                    if (selector.HasAll()) view.SetBackgroundImage(selector.All);
-                    else view.EnsureSelectorData().BackgroundImage = new TriggerableSelector<string>(view, selector, view.SetBackgroundImage, true);
-                }
-                else
-                {
-                    view.SetBackgroundImage((string)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+            if (view.themeData?.selectorData != null)
             {
-                var view = (View)bindable;
-                string backgroundImage = "";
-
-                PropertyMap background = view.Background;
-                background.Find(ImageVisualProperty.URL)?.Get(out backgroundImage);
-
-                background?.Dispose();
-                background = null;
+                view.themeData.selectorData.BackgroundColor?.Reset(view);
+                view.themeData.selectorData.BackgroundImage?.Reset(view);
+            }
 
-                return backgroundImage;
+            if (newValue is Selector<string> selector)
+            {
+                if (selector.HasAll()) view.SetBackgroundImage(selector.All);
+                else view.EnsureSelectorData().BackgroundImage = new TriggerableSelector<string>(view, selector, view.SetBackgroundImage, true);
             }
-        );
+            else
+            {
+                view.SetBackgroundImage((string)newValue);
+            }
+        }),
+        defaultValueCreator: (bindable) =>
+        {
+            var view = (View)bindable;
+            string backgroundImage = "";
 
+            Tizen.NUI.PropertyMap background = view.Background;
+            background.Find(ImageVisualProperty.URL)?.Get(out backgroundImage);
 
+            return backgroundImage;
+        });
         /// <summary>BackgroundImageBorderProperty</summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
         public static readonly BindableProperty BackgroundImageBorderProperty = BindableProperty.Create(nameof(BackgroundImageBorder), typeof(Rectangle), typeof(View), default(Rectangle), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
@@ -228,37 +200,27 @@ namespace Tizen.NUI.BaseComponents
 
             return view.backgroundExtraData?.BackgroundImageBorder;
         });
-
         /// <summary>
         /// BackgroundProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty BackgroundProperty = BindableProperty.Create(nameof(Background), typeof(PropertyMap), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty BackgroundProperty = BindableProperty.Create(nameof(Background), typeof(PropertyMap), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    var propertyValue = new PropertyValue((PropertyMap)newValue);
-                    Object.SetProperty(view.SwigCPtr, Property.BACKGROUND, propertyValue);
-
-                    view.backgroundExtraData = null;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.BACKGROUND, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
 
-                    propertyValue.Dispose();
-                    propertyValue = null;
-                }
-            },
-            defaultValueCreator: (bindable) =>
-            {
-                var view = (View)bindable;
-                PropertyMap tmp = new PropertyMap();
-                var propertyValue = Object.GetProperty(view.SwigCPtr, Property.BACKGROUND);
-                propertyValue.Get(tmp);
-                propertyValue.Dispose();
-                propertyValue = null;
-                return tmp;
+                view.backgroundExtraData = null;
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.BACKGROUND).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// StateProperty
@@ -398,32 +360,21 @@ namespace Tizen.NUI.BaseComponents
         /// CellIndexProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty CellIndexProperty = BindableProperty.Create(nameof(CellIndex), typeof(Vector2), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    var tmp = new PropertyValue((Vector2)newValue);
-                    Object.SetProperty(view.SwigCPtr, TableView.ChildProperty.CellIndex, tmp);
-                    tmp.Dispose();
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty CellIndexProperty = BindableProperty.Create(nameof(CellIndex), typeof(Vector2), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalCellIndex == null)
-                {
-                    view.internalCellIndex = new Vector2(view.OnCellIndexChanged, 0, 0);
-                }
-
-                var tmp = Object.GetProperty(view.SwigCPtr, TableView.ChildProperty.CellIndex);
-                tmp?.Get(view.internalCellIndex);
-                tmp?.Dispose();
-
-                return view.internalCellIndex;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, TableView.ChildProperty.CellIndex, new Tizen.NUI.PropertyValue((Vector2)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Vector2 temp = new Vector2(0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, TableView.ChildProperty.CellIndex).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// RowSpanProperty
@@ -657,9 +608,9 @@ namespace Tizen.NUI.BaseComponents
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
         public static readonly BindableProperty Size2DProperty = BindableProperty.Create(nameof(Size2D), typeof(Size2D), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
+            propertyChanged: ((bindable, oldValue, newValue) =>
             {
-                var view = (View)bindable;
+                View view = (View)bindable;
                 if (newValue != null)
                 {
                     view.SetSize(((Size2D)newValue).Width, ((Size2D)newValue).Height, 0);
@@ -669,32 +620,29 @@ namespace Tizen.NUI.BaseComponents
 
                     view.layout?.RequestLayout();
                 }
-            },
-            defaultValueCreator: (bindable) =>
+            }),
+            defaultValueCreator: ((bindable) =>
             {
-                var view = (View)bindable;
+                View view = (View)bindable;
                 var tmp = new Size(0, 0, 0);
-                var tmpProperty = Object.GetProperty(view.SwigCPtr, Property.SIZE);
-                tmpProperty?.Get(tmp);
+                Object.GetProperty(view.SwigCPtr, Property.SIZE).Get(tmp);
+
+                int tmpWidth = (int)tmp?.Width;
+                int tmpHeight = (int)tmp?.Height;
+                tmp?.Dispose();
+                tmp = null;
 
                 if (view.internalSize2D == null)
                 {
-                    view.internalSize2D = new Size2D(view.OnSize2DChanged, (int)tmp?.Width, (int)tmp?.Height);
+                    view.internalSize2D = new Size2D(view.OnSize2DChanged, tmpWidth, tmpHeight);
                 }
                 else
                 {
-                    if (view.internalSize2D.SwigCPtr.Handle != global::System.IntPtr.Zero)
-                    {
-                        Interop.Vector2.WidthSet(view.internalSize2D.SwigCPtr, (float)tmp?.Width);
-                        Interop.Vector2.HeightSet(view.internalSize2D.SwigCPtr, (float)tmp?.Height);
-                    }
+                    if (view.internalSize2D.Width != tmpWidth) { view.internalSize2D.Width = tmpWidth; }
+                    if (view.internalSize2D.Height != tmpHeight) { view.internalSize2D.Height = tmpHeight; }
                 }
-
-                tmpProperty?.Dispose();
-                tmp?.Dispose();
-
                 return view.internalSize2D;
-            }
+            })
         );
 
         /// <summary>
@@ -729,41 +677,21 @@ namespace Tizen.NUI.BaseComponents
         /// Position2DProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty Position2DProperty = BindableProperty.Create(nameof(Position2D), typeof(Position2D), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetPosition(((Position2D)newValue).X, ((Position2D)newValue).Y, 0);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty Position2DProperty = BindableProperty.Create(nameof(Position2D), typeof(Position2D), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                var tmp = new Position(0, 0, 0);
-                var tmpProperty = Object.GetProperty(view.SwigCPtr, Property.POSITION);
-                tmpProperty?.Get(tmp);
-
-                if (view.internalPosition2D == null)
-                {
-                    view.internalPosition2D = new Position2D(view.OnPosition2DChanged, (int)tmp?.X, (int)tmp?.Y);
-                }
-                else
-                {
-                    if (view.internalPosition2D.SwigCPtr.Handle != IntPtr.Zero)
-                    {
-                        Interop.Vector2.XSet(view.internalPosition2D.SwigCPtr, (float)tmp?.X);
-                        Interop.Vector2.YSet(view.internalPosition2D.SwigCPtr, (float)tmp?.Y);
-                    }
-                }
-
-                tmpProperty?.Dispose();
-                tmp?.Dispose();
-
-                return view.internalPosition2D;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue(new Position((Position2D)newValue)));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Position temp = new Position(0.0f, 0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.POSITION).Get(temp);
+            return new Position2D(temp);
+        }));
 
         /// <summary>
         /// PositionUsesPivotPointProperty
@@ -859,29 +787,21 @@ namespace Tizen.NUI.BaseComponents
         /// PivotPointProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty PivotPointProperty = BindableProperty.Create(nameof(PivotPoint), typeof(Position), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetAnchorPoint((Position)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty PivotPointProperty = BindableProperty.Create(nameof(PivotPoint), typeof(Position), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalPivotPoint == null)
-                {
-                    view.internalPivotPoint = new Position(view.OnPivotPointChanged, 0, 0, 0);
-                }
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.AnchorPoint);
-                tmp?.Get(view.internalPivotPoint);
-                tmp?.Dispose();
-
-                return view.internalPivotPoint;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.AnchorPoint, new Tizen.NUI.PropertyValue((Position)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Position temp = new Position(0.0f, 0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.AnchorPoint).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// SizeWidthProperty
@@ -929,30 +849,21 @@ namespace Tizen.NUI.BaseComponents
         /// PositionProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty PositionProperty = BindableProperty.Create(nameof(Position), typeof(Position), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetPosition(((Position)newValue).X, ((Position)newValue).Y, ((Position)newValue).Z);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty PositionProperty = BindableProperty.Create(nameof(Position), typeof(Position), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                var tmpProperty = Object.GetProperty(view.SwigCPtr, Property.POSITION);
-
-                if (view.internalPosition == null)
-                {
-                    view.internalPosition = new Position(view.OnPositionChanged, 0, 0, 0);
-                }
-                tmpProperty?.Get(view.internalPosition);
-                tmpProperty?.Dispose();
-
-                return view.internalPosition;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue((Position)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Position temp = new Position(0.0f, 0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.POSITION).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// PositionXProperty
@@ -1038,30 +949,21 @@ namespace Tizen.NUI.BaseComponents
         /// ScaleProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty ScaleProperty = BindableProperty.Create(nameof(Scale), typeof(Vector3), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetScale((Vector3)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty ScaleProperty = BindableProperty.Create(nameof(Scale), typeof(Vector3), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalScale == null)
-                {
-                    view.internalScale = new Vector3(view.OnScaleChanged, 0, 0, 0);
-                }
-
-                var tmpPropery = Object.GetProperty(view.SwigCPtr, Property.SCALE);
-                tmpPropery?.Get(view.internalScale);
-                tmpPropery?.Dispose();
-
-                return view.internalScale;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SCALE, new Tizen.NUI.PropertyValue((Vector3)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SCALE).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// ScaleXProperty
@@ -1127,23 +1029,21 @@ namespace Tizen.NUI.BaseComponents
         /// NameProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty NameProperty = BindableProperty.Create(nameof(Name), typeof(string), typeof(View), string.Empty,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetName((string)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty NameProperty = BindableProperty.Create(nameof(Name), typeof(string), typeof(View), string.Empty, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                string temp;
-                temp = view.GetName();
-                return temp;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.NAME, new Tizen.NUI.PropertyValue((string)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            string temp;
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.NAME).Get(out temp);
+            return temp;
+        }));
 
         /// <summary>
         /// SensitiveProperty
@@ -1252,31 +1152,21 @@ namespace Tizen.NUI.BaseComponents
         /// SizeModeFactorProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty SizeModeFactorProperty = BindableProperty.Create(nameof(SizeModeFactor), typeof(Vector3), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    var tmp = new PropertyValue((Vector3)newValue);
-                    Object.SetProperty(view.SwigCPtr, Property.SizeModeFactor, tmp);
-                    tmp?.Dispose();
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty SizeModeFactorProperty = BindableProperty.Create(nameof(SizeModeFactor), typeof(Vector3), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalSizeModeFactor == null)
-                {
-                    view.internalSizeModeFactor = new Vector3(view.OnSizeModeFactorChanged, 0, 0, 0);
-                }
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.SizeModeFactor);
-                tmp?.Get(view.internalSizeModeFactor);
-                tmp?.Dispose();
-
-                return view.internalSizeModeFactor;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SizeModeFactor, new Tizen.NUI.PropertyValue((Vector3)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SizeModeFactor).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// WidthResizePolicyProperty
@@ -1467,122 +1357,96 @@ namespace Tizen.NUI.BaseComponents
         /// PaddingProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty PaddingProperty = BindableProperty.Create(nameof(Padding), typeof(Extents), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    var tmp = new PropertyValue((Extents)newValue);
-                    Object.SetProperty(view.SwigCPtr, View.Property.PADDING, tmp);
-                    tmp?.Dispose();
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty PaddingProperty = BindableProperty.Create(nameof(Padding), typeof(Extents), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalPadding == null)
-                {
-                    view.internalPadding = new Extents(view.OnPaddingChanged, 0, 0, 0, 0);
-                }
-
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.PADDING);
-                tmp?.Get(view.internalPadding);
-                tmp?.Dispose();
-
-                return view.internalPadding;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.PADDING, new Tizen.NUI.PropertyValue((Extents)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Extents temp = new Extents(0, 0, 0, 0);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.PADDING).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// SizeProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty SizeProperty = BindableProperty.Create(nameof(Size), typeof(Size), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    // Set Specification so when layouts measure this View it matches the value set here.
-                    // All Views are currently Layouts.
-                    view.WidthSpecification = (int)System.Math.Ceiling(((Size)newValue).Width);
-                    view.HeightSpecification = (int)System.Math.Ceiling(((Size)newValue).Height);
-
-                    view.SetSize(((Size)newValue).Width, ((Size)newValue).Height, ((Size)newValue).Depth);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty SizeProperty = BindableProperty.Create(nameof(Size), typeof(Size), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-
-                var tmpProperty = Object.GetProperty(view.SwigCPtr, Property.SIZE);
-                if (view.internalSize == null)
-                {
-                    view.internalSize = new Size(view.OnSizeChanged, 0, 0, 0);
-                }
-                tmpProperty?.Get(view.internalSize);
-                tmpProperty?.Dispose();
-
-                return view.internalSize;
+                Size size = (Size)newValue;
+                // Set Specification so when layouts measure this View it matches the value set here.
+                // All Views are currently Layouts.
+                view.WidthSpecification = (int)System.Math.Ceiling(size.Width);
+                view.HeightSpecification = (int)System.Math.Ceiling(size.Height);
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue(size));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Size temp = new Size(0, 0, 0);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SIZE).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// MinimumSizeProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty MinimumSizeProperty = BindableProperty.Create(nameof(MinimumSize), typeof(Size2D), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty MinimumSizeProperty = BindableProperty.Create(nameof(MinimumSize), typeof(Size2D), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            Size2D temp = newValue as Size2D;
+            if (temp != null)
             {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetMinimumSize((Size2D)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MinimumSize, new Tizen.NUI.PropertyValue(temp));
+            }
+            else
             {
-                var view = (View)bindable;
-                if (view.internalMinimumSize == null)
-                {
-                    view.internalMinimumSize = new Size2D(view.OnMinimumSizeChanged, 0, 0);
-                }
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.MinimumSize);
-                tmp?.Get(view.internalMinimumSize);
-                tmp?.Dispose();
-
-                return view.internalMinimumSize;
+                Tizen.Log.Fatal("NUI", $"[ERROR] can't set MinimumSizeProperty!");
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Size2D temp = new Size2D(0, 0);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MinimumSize).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// MaximumSizeProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty MaximumSizeProperty = BindableProperty.Create(nameof(MaximumSize), typeof(Size2D), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty MaximumSizeProperty = BindableProperty.Create(nameof(MaximumSize), typeof(Size2D), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            Size2D temp = newValue as Size2D;
+            if (temp != null)
             {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    view.SetMaximumSize((Size2D)newValue);
-                }
-            },
-            defaultValueCreator: (bindable) =>
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MaximumSize, new Tizen.NUI.PropertyValue(temp));
+            }
+            else
             {
-                var view = (View)bindable;
-                if (view.internalMaximumSize == null)
-                {
-                    view.internalMaximumSize = new Size2D(view.OnMaximumSizeChanged, 0, 0);
-                }
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.MaximumSize);
-                tmp?.Get(view.internalMaximumSize);
-                tmp?.Dispose();
-
-                return view.internalMaximumSize;
+                Tizen.Log.Fatal("NUI", $"[ERROR] can't set MaximumSizeProperty!");
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Size2D temp = new Size2D(0, 0);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MaximumSize).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// InheritPositionProperty
@@ -1674,31 +1538,21 @@ namespace Tizen.NUI.BaseComponents
         /// MarginProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty MarginProperty = BindableProperty.Create(nameof(Margin), typeof(Extents), typeof(View), null,
-            propertyChanged: (bindable, oldValue, newValue) =>
-            {
-                var view = (View)bindable;
-                if (newValue != null)
-                {
-                    var tmp = new PropertyValue((Extents)newValue);
-                    Object.SetProperty(view.SwigCPtr, Property.MARGIN, tmp);
-                    tmp?.Dispose();
-                }
-            },
-            defaultValueCreator: (bindable) =>
+        public static readonly BindableProperty MarginProperty = BindableProperty.Create(nameof(Margin), typeof(Extents), typeof(View), null, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var view = (View)bindable;
+            if (newValue != null)
             {
-                var view = (View)bindable;
-                if (view.internalMargin == null)
-                {
-                    view.internalMargin = new Extents(view.OnMarginChanged, 0, 0, 0, 0);
-                }
-                var tmp = Object.GetProperty(view.SwigCPtr, Property.MARGIN);
-                tmp?.Get(view.internalMargin);
-                tmp?.Dispose();
-
-                return view.internalMargin;
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MARGIN, new Tizen.NUI.PropertyValue((Extents)newValue));
             }
-        );
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var view = (View)bindable;
+            Extents temp = new Extents(0, 0, 0, 0);
+            Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.MARGIN).Get(temp);
+            return temp;
+        }));
 
         /// <summary>
         /// UpdateSizeHintProperty
@@ -2040,10 +1894,8 @@ namespace Tizen.NUI.BaseComponents
         {
             if (string.IsNullOrEmpty(value))
             {
-                var empty = new PropertyValue();
                 // Clear background
-                Object.SetProperty(SwigCPtr, Property.BACKGROUND, empty);
-                empty.Dispose();
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, View.Property.BACKGROUND, new PropertyValue());
                 return;
             }
 
@@ -2055,62 +1907,33 @@ namespace Tizen.NUI.BaseComponents
 
             if (backgroundExtraData == null)
             {
-                var propertyValue = new PropertyValue(value);
-                Object.SetProperty(SwigCPtr, Property.BACKGROUND, propertyValue);
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, View.Property.BACKGROUND, new PropertyValue(value));
                 BackgroundImageSynchronousLoading = backgroundImageSynchronousLoading;
-                propertyValue?.Dispose();
+
                 return;
             }
 
-            var map = new PropertyMap();
-            var url = new PropertyValue(value);
-            var cornerRadiusValue = backgroundExtraData.CornerRadius == null ? new PropertyValue() : new PropertyValue(backgroundExtraData.CornerRadius);
-            var cornerRadius = new PropertyValue(cornerRadiusValue);
-            var cornerRadiusPolicy = new PropertyValue((int)(backgroundExtraData.CornerRadiusPolicy));
-            var borderlineWidth = new PropertyValue(backgroundExtraData.BorderlineWidth);
-            var borderlineColorValue = backgroundExtraData.BorderlineColor == null ? new PropertyValue(Color.Black) : new PropertyValue(backgroundExtraData.BorderlineColor);
-            var borderlineColor = new PropertyValue(borderlineColorValue);
-            var borderlineOffset = new PropertyValue(backgroundExtraData.BorderlineOffset);
-            var synchronousLoading = new PropertyValue(backgroundImageSynchronousLoading);
-            var npatchType = new PropertyValue((int)Visual.Type.NPatch);
-            var border = new PropertyValue(backgroundExtraData.BackgroundImageBorder);
-            var imageType = new PropertyValue((int)Visual.Type.Image);
-
-            map.Add(ImageVisualProperty.URL, url)
-               .Add(Visual.Property.CornerRadius, cornerRadius)
-               .Add(Visual.Property.CornerRadiusPolicy, cornerRadiusPolicy)
-               .Add(Visual.Property.BorderlineWidth, borderlineWidth)
-               .Add(Visual.Property.BorderlineColor, borderlineColor)
-               .Add(Visual.Property.BorderlineOffset, borderlineOffset)
-               .Add(ImageVisualProperty.SynchronousLoading, synchronousLoading);
+            PropertyMap map = new PropertyMap();
+
+            map.Add(ImageVisualProperty.URL, new PropertyValue(value))
+               .Add(Visual.Property.CornerRadius, new PropertyValue(backgroundExtraData.CornerRadius == null ? new PropertyValue() : new PropertyValue(backgroundExtraData.CornerRadius)))
+               .Add(Visual.Property.CornerRadiusPolicy, new PropertyValue((int)(backgroundExtraData.CornerRadiusPolicy)))
+               .Add(Visual.Property.BorderlineWidth, new PropertyValue(backgroundExtraData.BorderlineWidth))
+               .Add(Visual.Property.BorderlineColor, new PropertyValue(backgroundExtraData.BorderlineColor == null ? new PropertyValue(Color.Black) : new PropertyValue(backgroundExtraData.BorderlineColor)))
+               .Add(Visual.Property.BorderlineOffset, new PropertyValue(backgroundExtraData.BorderlineOffset))
+               .Add(ImageVisualProperty.SynchronousLoading, new PropertyValue(backgroundImageSynchronousLoading));
 
             if (backgroundExtraData.BackgroundImageBorder != null)
             {
-                map.Add(Visual.Property.Type, npatchType)
-                   .Add(NpatchImageVisualProperty.Border, border);
+                map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch))
+                   .Add(NpatchImageVisualProperty.Border, new PropertyValue(backgroundExtraData.BackgroundImageBorder));
             }
             else
             {
-                map.Add(Visual.Property.Type, imageType);
-            }
-
-            var mapValue = new PropertyValue(map);
-            Object.SetProperty(SwigCPtr, Property.BACKGROUND, mapValue);
-
-            imageType?.Dispose();
-            border?.Dispose();
-            npatchType?.Dispose();
-            synchronousLoading?.Dispose();
-            borderlineOffset?.Dispose();
-            borderlineColor?.Dispose();
-            borderlineColorValue?.Dispose();
-            borderlineWidth?.Dispose();
-            cornerRadiusPolicy?.Dispose();
-            cornerRadius?.Dispose();
-            cornerRadiusValue?.Dispose();
-            url?.Dispose();
-            map?.Dispose();
-            mapValue?.Dispose();
+                map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            }
+
+            Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, View.Property.BACKGROUND, new PropertyValue(map));
         }
 
         private void SetBackgroundImageBorder(Rectangle value)
@@ -2156,45 +1979,22 @@ namespace Tizen.NUI.BaseComponents
 
             if (backgroundExtraData == null)
             {
-                var background = new PropertyValue(value);
-                Object.SetProperty(SwigCPtr, Property.BACKGROUND, background);
-                background?.Dispose();
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, View.Property.BACKGROUND, new PropertyValue(value));
                 return;
             }
 
-            var map = new PropertyMap();
-            var colorType = new PropertyValue((int)Visual.Type.Color);
-            var mixColor = new PropertyValue(value);
-            var cornerRadiusValue = backgroundExtraData.CornerRadius == null ? new PropertyValue() : new PropertyValue(backgroundExtraData.CornerRadius);
-            var cornerRadius = new PropertyValue(cornerRadiusValue);
-            var cornerRadiusPolicy = new PropertyValue((int)(backgroundExtraData.CornerRadiusPolicy));
-            var borderlineWidth = new PropertyValue(backgroundExtraData.BorderlineWidth);
-            var borderlineColorValue = backgroundExtraData.BorderlineColor == null ? new PropertyValue(Color.Black) : new PropertyValue(backgroundExtraData.BorderlineColor);
-            var borderlineColor = new PropertyValue(borderlineColorValue);
-            var borderlineOffset = new PropertyValue(backgroundExtraData.BorderlineOffset);
-
-            map.Add(Visual.Property.Type, colorType)
-               .Add(ColorVisualProperty.MixColor, mixColor)
-               .Add(Visual.Property.CornerRadius, cornerRadius)
-               .Add(Visual.Property.CornerRadiusPolicy, cornerRadiusPolicy)
-               .Add(Visual.Property.BorderlineWidth, borderlineWidth)
-               .Add(Visual.Property.BorderlineColor, borderlineColor)
-               .Add(Visual.Property.BorderlineOffset, borderlineOffset);
-
-            var mapValue = new PropertyValue(map);
-            Object.SetProperty(SwigCPtr, Property.BACKGROUND, mapValue);
-
-            borderlineOffset?.Dispose();
-            borderlineColor?.Dispose();
-            borderlineColorValue?.Dispose();
-            borderlineWidth?.Dispose();
-            cornerRadiusPolicy?.Dispose();
-            cornerRadius?.Dispose();
-            cornerRadiusValue?.Dispose();
-            mixColor?.Dispose();
-            colorType?.Dispose();
-            map?.Dispose();
-            mapValue?.Dispose();
+            PropertyMap map = new PropertyMap();
+
+            map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Color))
+               .Add(ColorVisualProperty.MixColor, new PropertyValue(value))
+               .Add(Visual.Property.CornerRadius, new PropertyValue(new PropertyValue(backgroundExtraData.CornerRadius == null ? new PropertyValue() : new PropertyValue(backgroundExtraData.CornerRadius))))
+               .Add(Visual.Property.CornerRadiusPolicy, new PropertyValue((int)(backgroundExtraData.CornerRadiusPolicy)))
+               .Add(Visual.Property.BorderlineWidth, new PropertyValue(backgroundExtraData.BorderlineWidth))
+               .Add(Visual.Property.BorderlineColor, new PropertyValue(backgroundExtraData.BorderlineColor == null ? new PropertyValue(Color.Black) : new PropertyValue(backgroundExtraData.BorderlineColor)))
+               .Add(Visual.Property.BorderlineOffset, new PropertyValue(backgroundExtraData.BorderlineOffset));
+
+
+            Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, View.Property.BACKGROUND, new PropertyValue(map));
         }
 
         private void SetColor(Color value)
index cfe53e3..37371cb 100755 (executable)
@@ -606,7 +606,7 @@ namespace Tizen.NUI.BaseComponents
                 }
                 backgroundResourceLoadedEventHandler += value;
             }
-
+            
             remove
             {
                 backgroundResourceLoadedEventHandler -= value;
@@ -720,39 +720,93 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
-        private void OnColorChanged(float r, float g, float b, float a)
+        private void OnSize2DChanged(int? width, int? height)
         {
-            Color = new Color(r, g, b, a);
+            PropertyValue temp = null;
+            if (width != null)
+            {
+                temp = new PropertyValue((float)width);
+                Object.SetProperty(SwigCPtr, Property.SizeWidth, temp);
+            }
+            if (height != null)
+            {
+                temp = new PropertyValue((float)height);
+                Object.SetProperty(SwigCPtr, Property.SizeHeight, temp);
+            }
+            temp?.Dispose();
         }
 
-        private void OnMinimumSizeChanged(int width, int height)
+        private void OnMinimumSizeChanged(int? width, int? height)
         {
-            MinimumSize = new Size2D(width, height);
+            if (width != null && height != null)
+            {
+                MinimumSize = new Size2D((int)width, (int)height);
+            }
+            else if (width != null && height == null)
+            {
+                MinimumSize = new Size2D((int)width, (int)this.GetMinimumSize().Height);
+            }
+            else if (width == null && height != null)
+            {
+                MinimumSize = new Size2D((int)this.GetMinimumSize().Width, (int)height);
+            }
+            else
+            {
+                //both are null, do nothing.
+            }
         }
 
-        private void OnMaximumSizeChanged(int width, int height)
+        private void OnMaximumSizeChanged(int? width, int? height)
         {
-            MaximumSize = new Size2D(width, height);
+            if (width != null && height != null)
+            {
+                MaximumSize = new Size2D((int)width, (int)height);
+            }
+            else if (width != null && height == null)
+            {
+                MaximumSize = new Size2D((int)width, (int)this.GetMaximumSize().Height);
+            }
+            else if (width == null && height != null)
+            {
+                MaximumSize = new Size2D((int)this.GetMaximumSize().Width, (int)height);
+            }
+            else
+            {
+                //both are null, do nothing.
+            }
         }
 
         private void OnPosition2DChanged(int x, int y)
         {
-            SetPosition((float)x, (float)y, 0);
-        }
-
-        private void OnPositionChanged(float x, float y, float z)
-        {
-            SetPosition(x, y, z);
+            Position2D = new Position2D(x, y);
         }
 
-        private void OnSize2DChanged(int width, int height)
+        private void OnSizeChanged(float? width, float? height, float? depth)
         {
-            SetSize((float)width, (float)height, 0);
+            PropertyValue temp;
+            if (width != null)
+            {
+                temp = new Tizen.NUI.PropertyValue((float)width);
+                Tizen.NUI.Object.SetProperty(this.SwigCPtr, View.Property.SizeWidth, temp);
+                temp.Dispose();
+            }
+            if (height != null)
+            {
+                temp = new Tizen.NUI.PropertyValue((float)height);
+                Tizen.NUI.Object.SetProperty(this.SwigCPtr, View.Property.SizeHeight, temp);
+                temp.Dispose();
+            }
+            if (depth != null)
+            {
+                temp = new Tizen.NUI.PropertyValue((float)depth);
+                Tizen.NUI.Object.SetProperty(this.SwigCPtr, View.Property.SizeDepth, temp);
+                temp.Dispose();
+            }
         }
 
-        private void OnSizeChanged(float width, float height, float depth)
+        private void OnPositionChanged(float x, float y, float z)
         {
-            SetSize(width, height, depth);
+            Position = new Position(x, y, z);
         }
 
         private void OnParentOriginChanged(float x, float y, float z)
index 252d9f1..ff4cf4d 100755 (executable)
@@ -1136,35 +1136,8 @@ namespace Tizen.NUI.BaseComponents
             }
 
             //_mergedStyle = null;
-
-            internalMaximumSize?.Dispose();
-            internalMaximumSize = null;
-            internalMinimumSize?.Dispose();
-            internalMinimumSize = null;
-            internalMargin?.Dispose();
-            internalMargin = null;
-            internalPadding?.Dispose();
-            internalPadding = null;
-            internalSizeModeFactor?.Dispose();
-            internalSizeModeFactor = null;
-            internalCellIndex?.Dispose();
-            internalCellIndex = null;
-            internalBackgroundColor?.Dispose();
-            internalBackgroundColor = null;
-            internalColor?.Dispose();
-            internalColor = null;
-            internalPivotPoint?.Dispose();
-            internalPivotPoint = null;
-            internalPosition?.Dispose();
-            internalPosition = null;
-            internalPosition2D?.Dispose();
-            internalPosition2D = null;
-            internalScale?.Dispose();
-            internalScale = null;
-            internalSize?.Dispose();
-            internalSize = null;
+            
             internalSize2D?.Dispose();
-            internalSize2D = null;
 
             if (type == DisposeTypes.Explicit)
             {
@@ -1415,6 +1388,11 @@ namespace Tizen.NUI.BaseComponents
             Margin = new Extents(start, end, top, bottom);
         }
 
+        private void OnColorChanged(float r, float g, float b, float a)
+        {
+            Color = new Color(r, g, b, a);
+        }
+
         private void OnAnchorPointChanged(float x, float y, float z)
         {
             AnchorPoint = new Position(x, y, z);
index bae508a..f9a91ca 100755 (executable)
@@ -1104,7 +1104,7 @@ namespace Tizen.NUI
                 Interop.Vector4.RSet(SwigCPtr, ValueCheck(value));
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, G, B, A);
+                callback?.Invoke(R, G, B, A);
             }
             get
             {
@@ -1137,7 +1137,7 @@ namespace Tizen.NUI
                 Interop.Vector4.GSet(SwigCPtr, ValueCheck(value));
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(R, value, B, A);
+                callback?.Invoke(R, G, B, A);
             }
             get
             {
@@ -1170,7 +1170,7 @@ namespace Tizen.NUI
                 Interop.Vector4.BSet(SwigCPtr, ValueCheck(value));
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(R, G, value, A);
+                callback?.Invoke(R, G, B, A);
             }
             get
             {
@@ -1203,7 +1203,7 @@ namespace Tizen.NUI
                 Interop.Vector4.ASet(SwigCPtr, ValueCheck(value));
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(R, G, B, value);
+                callback?.Invoke(R, G, B, A);
             }
             get
             {
index b24478a..e3581bd 100755 (executable)
@@ -147,7 +147,7 @@ namespace Tizen.NUI
                 Interop.Extents.StartSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, End, Top, Bottom);
+                callback?.Invoke(Start, End, Top, Bottom);
             }
             get
             {
@@ -180,7 +180,7 @@ namespace Tizen.NUI
                 Interop.Extents.EndSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Start, value, Top, Bottom);
+                callback?.Invoke(Start, End, Top, Bottom);
             }
             get
             {
@@ -213,7 +213,7 @@ namespace Tizen.NUI
                 Interop.Extents.TopSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Start, End, value, Bottom);
+                callback?.Invoke(Start, End, Top, Bottom);
             }
             get
             {
@@ -246,7 +246,7 @@ namespace Tizen.NUI
                 Interop.Extents.BottomSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Start, End, Top, value);
+                callback?.Invoke(Start, End, Top, Bottom);
             }
             get
             {
index 15062d9..cd73776 100755 (executable)
@@ -540,7 +540,7 @@ namespace Tizen.NUI
                 Interop.Vector3.XSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, Y, Z);
+                callback?.Invoke(X, Y, Z);
             }
             get
             {
@@ -573,7 +573,7 @@ namespace Tizen.NUI
                 Interop.Vector3.YSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(X, value, Z);
+                callback?.Invoke(X, Y, Z);
             }
             get
             {
@@ -606,7 +606,7 @@ namespace Tizen.NUI
                 Interop.Vector3.ZSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(X, Y, value);
+                callback?.Invoke(X, Y, Z);
             }
             get
             {
index 01b797e..556ddfd 100755 (executable)
@@ -106,7 +106,7 @@ namespace Tizen.NUI
                 Interop.Vector2.XSet(SwigCPtr, (float)value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, Y);
+                callback?.Invoke(X, Y);
             }
             get
             {
@@ -139,7 +139,7 @@ namespace Tizen.NUI
                 Interop.Vector2.YSet(SwigCPtr, (float)value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(X, value);
+                callback?.Invoke(X, Y);
             }
             get
             {
index 2d8d589..fcdc98e 100755 (executable)
@@ -114,7 +114,7 @@ namespace Tizen.NUI
                 Interop.Vector3.WidthSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, Height, Depth);
+                callback?.Invoke(value, null, null);
             }
             get
             {
@@ -147,7 +147,7 @@ namespace Tizen.NUI
                 Interop.Vector3.HeightSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Width, value, Depth);
+                callback?.Invoke(null, value, null);
             }
             get
             {
@@ -180,7 +180,7 @@ namespace Tizen.NUI
                 Interop.Vector3.DepthSet(SwigCPtr, value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Width, Height, value);
+                callback?.Invoke(null, null, value);
             }
             get
             {
@@ -464,7 +464,7 @@ namespace Tizen.NUI
             return ret;
         }
 
-        internal delegate void SizeChangedCallback(float width, float height, float depth);
+        internal delegate void SizeChangedCallback(float? width, float? height, float? depth);
 
         internal Size(SizeChangedCallback cb, float w, float h, float d) : this(Interop.Vector3.NewVector3(w, h, d), true)
         {
index 91199a4..d50854f 100755 (executable)
@@ -66,7 +66,7 @@ namespace Tizen.NUI
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
-        internal delegate void Size2DChangedCallback(int width, int height);
+        internal delegate void Size2DChangedCallback(int? width, int? height);
 
         /// <summary>
         /// Hidden API (Inhouse API).
@@ -127,7 +127,7 @@ namespace Tizen.NUI
                 Interop.Vector2.WidthSet(SwigCPtr, (float)value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(value, Height);
+                callback?.Invoke(value, null);
             }
             get
             {
@@ -160,7 +160,7 @@ namespace Tizen.NUI
                 Interop.Vector2.HeightSet(SwigCPtr, (float)value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
-                callback?.Invoke(Width, value);
+                callback?.Invoke(null, value);
             }
             get
             {