Пример #1
0
            public static void Create(ModelBase model, BindingCollection relations)
            {
                var modelProps = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

                foreach (var prop in modelProps)
                {
                    if (!relations.ContainsKey(prop.Name))
                    {
                        continue;
                    }

                    ModelPropertyChanged setValue = (string name) =>
                    {
                        var binding = relations[name];
                        var value   = modelProps.First(x => x.Name == name).GetValue(model);

                        if (binding.Converter != null)
                        {
                            value = binding.Converter(value);
                        }

                        binding._type.GetProperty(binding.Property, BindingFlags.Public | BindingFlags.Instance).SetValue(binding.Obj, value);
                    };

                    setValue(prop.Name);
                    model.PropertyChanged += setValue;
                }
            }
Пример #2
0
        /// <summary>
        /// Déclenche l'événement <see cref="ModelPropertyChanged"/> si une propriété de <see cref="Model"/> change
        /// </summary>
        protected virtual void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var property = sender.GetType().GetProperty(e.PropertyName);

            if (property?.GetCustomAttributes(typeof(IgnoreChangeAttribute), true).Length == 0)
            {
                OnChanged();
                ModelPropertyChanged?.Invoke(sender, e);
            }
        }
Пример #3
0
 /// <summary>
 /// Raises the ModelPropertyChanged event
 /// </summary>
 /// <param name="propertyName"></param>
 protected virtual void OnModelPropertyChanged(string propertyName)
 {
     ModelPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 }
Пример #4
0
 protected void NotifyDataChanged([CallerMemberName] string propertyName = "")
 {
     ModelPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 }
Пример #5
0
 private void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     ModelPropertyChanged?.Invoke(this, e);
 }
Пример #6
0
 protected void RaiseModelPropertyChanged(DependencyProperty p, object newValue)
 {
     ModelPropertyChanged?.Invoke(p, newValue);
 }