Ejemplo n.º 1
0
        /// <summary>
        /// Raises a Property Changed event
        /// </summary>
        protected virtual void OnPropertyChanged(string propertyName, object before, object after)
        {
            // Register Property Changed
            if (!ChangedProperties.Contains(propertyName) && propertyName != "" && before != after)
            {
                ChangedProperties.Add(propertyName);
            }

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
Ejemplo n.º 2
0
 public void PropertyChange(string name, object value)
 {
     if (ChangedProperties.ContainsKey(name) == true)
     {
         ChangedProperties[name] = value;
     }
     else
     {
         ChangedProperties.Add(name, value);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Raises a Property Changed event
        /// </summary>
        public void OnPropertyChanged(string propertyName, object before, object after)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

            if (propertyName == null || ChangeTrackingDisabled)
            {
                return;
            }

            // Register Property Changed
            if (!ChangedProperties.Contains(propertyName) && before != after)
            {
                ChangedProperties.Add(propertyName);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Changes property of the object
        /// </summary>
        /// <typeparam name="TTarget"></typeparam>
        /// <param name="propertyExpr"></param>
        /// <param name="value"></param>
        public void Set <TTarget>(Expression <Func <TObj, TTarget> > propertyExpr, TTarget value)
        {
            if (!(propertyExpr.Body is MemberExpression memberSelectorExpression))
            {
                return;
            }

            var property = memberSelectorExpression.Member as PropertyInfo;

            if (property == null)
            {
                return;
            }

            var getter   = CreateGetter(propertyExpr);
            var oldValue = getter(_object);

            var handledValue = value;

            if (typeof(TTarget) == typeof(DateTime))
            {
                if (((DateTime)(object)oldValue).Difference((DateTime)(object)handledValue) > TimeSpan.FromSeconds(1))
                {
                    ActionIfDiff();
                }

                return;
            }
            if (typeof(TTarget) == typeof(TimeSpan))
            {
                if (((TimeSpan)(object)oldValue).Subtract((TimeSpan)(object)handledValue).Duration() > TimeSpan.FromSeconds(1))
                {
                    ActionIfDiff();
                }

                return;
            }

            if (!typeof(TTarget).IsSimple())
            {
                var jsonSerializerSettings = new JsonSerializerSettings();
                jsonSerializerSettings.Converters.Add(new DecimalConverter()
                {
                    Precision = 4
                });
                var jsonSerializer = JsonSerializer.Create(jsonSerializerSettings);
                if (typeof(IEnumerable).IsAssignableFrom(typeof(TTarget)))
                {
                    if (!JToken.DeepEquals(JArray.FromObject(oldValue, jsonSerializer), JArray.FromObject(handledValue, jsonSerializer)))
                    {
                        ActionIfDiff();
                    }
                }
                else
                {
                    if (!JToken.DeepEquals(JObject.FromObject(oldValue, jsonSerializer), JObject.FromObject(handledValue, jsonSerializer)))
                    {
                        ActionIfDiff();
                    }
                }

                return;
            }

            if (!Equals(oldValue, handledValue))
            {
                ActionIfDiff();
            }

            void ActionIfDiff()
            {
                var setter = CreateSetter(propertyExpr);

                setter(_object, handledValue);
                _actionIfChanged?.Invoke();
                IsChanged = true;

                if (IsLogChangedPropertiesEnabled)
                {
                    ChangedProperties.Add(new ChangedPropertyItem()
                    {
                        PropertyName = property.Name,
                        PropertyType = property.PropertyType,
                        OldValue     = oldValue,
                        NewValue     = handledValue
                    });
                }
            }
        }
Ejemplo n.º 5
0
        public void ChangeCellIndex(int totalDeltaCellIndexX, int totalDeltaCellIndexY)
        {
            int newCellIndexX = CellIndexX;
            int newCellImgX   = CellImgX;

            int newCellIndexY = CellIndexY;
            int newCellImgY   = CellImgY;

            if (totalDeltaCellIndexX != 0)
            {
                int deltaCellIndexX = totalDeltaCellIndexX > 0 ? 1 : -1;

                newCellIndexX = (CellIndexX + deltaCellIndexX + NumCellX) % NumCellX;

                if (deltaCellIndexX < 0 && CellIndexX == 0 && CellIndexX < newCellIndexX)
                {
                    if (newCellImgX + NumCellX >= TotalNumCellX)
                    {
                        CurrMapPage = CurrMapPage.Right;
                        //if (Neighbors[CurrMapPage].ContainsKey("R"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["R"];
                        //}
                        //else if (Neighbors[CurrMapPage].ContainsKey("L"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["L"];
                        //}
                    }
                    newCellImgX = (newCellImgX + NumCellX + TotalNumCellX) % TotalNumCellX;
                }

                if (deltaCellIndexX > 0 && CellIndexX + 1 == NumCellX && CellIndexX > newCellIndexX)
                {
                    if (newCellImgX - NumCellX < 0)
                    {
                        CurrMapPage = CurrMapPage.Left;
                        //if (Neighbors[CurrMapPage].ContainsKey("L"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["L"];
                        //}
                        //else if (Neighbors[CurrMapPage].ContainsKey("R"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["R"];
                        //}
                    }
                    newCellImgX = (newCellImgX - NumCellX + TotalNumCellX) % TotalNumCellX;
                }
            }

            if (totalDeltaCellIndexY != 0)
            {
                int deltaCellIndexY = totalDeltaCellIndexY > 0 ? 1 : -1;

                newCellIndexY = (CellIndexY + deltaCellIndexY + NumCellY) % NumCellY;

                if (deltaCellIndexY < 0 && CellIndexY == 0 && CellIndexY < newCellIndexY)
                {
                    if (newCellImgY + NumCellY >= TotalNumCellY)
                    {
                        CurrMapPage = CurrMapPage.Bottom;
                        //if (Neighbors[CurrMapPage].ContainsKey("B"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["B"];
                        //}
                        //else if (Neighbors[CurrMapPage].ContainsKey("T"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["T"];
                        //}
                    }
                    newCellImgY = (newCellImgY + NumCellY + TotalNumCellY) % TotalNumCellY;
                }

                if (deltaCellIndexY > 0 && CellIndexY + 1 == NumCellY && CellIndexY > newCellIndexY)
                {
                    if (newCellImgY - NumCellY < 0)
                    {
                        CurrMapPage = CurrMapPage.Top;
                        //if (Neighbors[CurrMapPage].ContainsKey("T"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["T"];
                        //}
                        //else if (Neighbors[CurrMapPage].ContainsKey("B"))
                        //{
                        //    CurrMapPage = Neighbors[CurrMapPage]["B"];
                        //}
                    }
                    newCellImgY = (newCellImgY - NumCellY + TotalNumCellY) % TotalNumCellY;
                }
            }

            if (CellIndexX != newCellIndexX)
            {
                CellIndexX = newCellIndexX;
                ChangedProperties.Add("CellX");
            }

            if (CellIndexY != newCellIndexY)
            {
                CellIndexY = newCellIndexY;
                ChangedProperties.Add("CellY");
            }

            if (CellImgX != newCellImgX || CellImgY != newCellImgY)
            {
                CellImgX = newCellImgX;
                CellImgY = newCellImgY;
                ChangedProperties.Add("CellImgPath");
            }

            NotifyPropertyChanged();
        }