From a5bc69a01ad32b2c475349166d76ac4d81b2569e Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Sat, 22 Oct 2016 00:04:35 +0200 Subject: [PATCH] debug and test 2 way binding, working ok. --- CrowIDE/src/MembersView.cs | 23 ++++++++------ CrowIDE/ui/imlEditor.crow | 4 +-- Templates/ColorPicker.template | 28 ++++++++--------- Tests/BasicTests.cs | 30 +++++++++++++++++-- Tests/Interfaces/Divers/colorPicker.crow | 6 ++-- Tests/Interfaces/Divers/test2WayBinding.crow | 5 ++++ Tests/Interfaces/GraphicObject/2.crow | 3 +- Tests/Tests.csproj | 3 ++ src/CompilerServices/CompilerServices.cs | 9 ++++-- src/GraphicObjects/GraphicObject.cs | 3 +- src/GraphicObjects/HueSelector.cs | 2 +- src/GraphicObjects/SaturationValueSelector.cs | 8 +++-- 12 files changed, 87 insertions(+), 37 deletions(-) create mode 100755 Tests/Interfaces/Divers/test2WayBinding.crow diff --git a/CrowIDE/src/MembersView.cs b/CrowIDE/src/MembersView.cs index 3f250dd9..d8a76951 100644 --- a/CrowIDE/src/MembersView.cs +++ b/CrowIDE/src/MembersView.cs @@ -27,24 +27,29 @@ using System.Collections.Generic; namespace CrowIDE { - public class PropertyContainer : IBindable + public class PropertyContainer : IBindable, IValueChange { + #region IBindable implementation public object DataSource { - get { - throw new NotImplementedException (); - } + get { return null; } set { throw new NotImplementedException (); } } - - #region IBindable implementation List bindings = new List (); public List Bindings { get { return bindings; } } #endregion + #region IValueChange implementation + public event EventHandler ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + PropertyInfo pi; object instance; @@ -53,7 +58,7 @@ namespace CrowIDE get { return pi.GetValue(instance); } set { try { - if (pi.PropertyType != value.GetType() && pi.PropertyType != typeof(string)){ + if (!pi.PropertyType.IsAssignableFrom(value.GetType()) && pi.PropertyType != typeof(string)){ if (pi.PropertyType.IsEnum) { pi.SetValue (instance, value); } else { @@ -67,7 +72,7 @@ namespace CrowIDE } catch (Exception ex) { System.Diagnostics.Debug.WriteLine ("Error setting property:"+ ex.ToString()); } - + NotifyValueChanged ("Value", value); } } public string Type { get { return pi.PropertyType.IsEnum ? @@ -86,7 +91,7 @@ namespace CrowIDE } public class MembersView : ListBox - { + { object instance; [XmlAttributeAttribute][DefaultValue(null)] diff --git a/CrowIDE/ui/imlEditor.crow b/CrowIDE/ui/imlEditor.crow index d84fa6a8..ce491168 100644 --- a/CrowIDE/ui/imlEditor.crow +++ b/CrowIDE/ui/imlEditor.crow @@ -124,11 +124,11 @@ MouseEnter="{Background=UnitedNationsBlue}" MouseLeave="{Background=Transparent}" >