public void AssignPropertyChangedEventsOnInstanceViewModels() { foreach (var instanceViewModel in Instances) { instanceViewModel.PropertyChanged += (sender, args) => AnyValueChanged?.Invoke(args.PropertyName); } }
private void HandlePropertyChecked(object sender, PropertyChangedEventArgs e) { var senderAsViewModel = (VelocityPropertyViewModel)sender; string changedVariable = null; switch (e.PropertyName) { case nameof(VelocityPropertyViewModel.IsChecked): changedVariable = senderAsViewModel.Name; break; } bool shouldRaiseValueChanged = false; if (changedVariable != null) { if (IsRootSelected) { var isAlreadyInList = this.EntityManagedProperties.Contains(senderAsViewModel.Name); if (senderAsViewModel.IsChecked && isAlreadyInList == false) { this.EntityManagedProperties.Add(senderAsViewModel.Name); shouldRaiseValueChanged = true; } else if (senderAsViewModel.IsChecked == false && isAlreadyInList) { this.EntityManagedProperties.Remove(senderAsViewModel.Name); shouldRaiseValueChanged = true; } } else { var instanceList = this.Instances.FirstOrDefault(item => item.Name == SelectedInstance?.Name)?.SelectedProperties; if (instanceList != null) { var isAlreadyInList = instanceList.Contains(senderAsViewModel.Name); if (senderAsViewModel.IsChecked && isAlreadyInList == false) { instanceList.Add(senderAsViewModel.Name); shouldRaiseValueChanged = true; } else if (senderAsViewModel.IsChecked == false && isAlreadyInList) { instanceList.Remove(senderAsViewModel.Name); shouldRaiseValueChanged = true; } } } if (shouldRaiseValueChanged) { AnyValueChanged?.Invoke(e.PropertyName); } } }
public NodeField(Instance instance, IObservableValue <string> name, IFlow flowInput, IFlow flowOutput, IOpacity opacity, ILaminarValueStore valueStore, IUserInterfaceManager userInterfaces) : base(name, flowInput, flowOutput, opacity) { _valueStore = valueStore; UserInterfaces = userInterfaces; UserInterfaces.Displays = instance.RegisteredDisplays; UserInterfaces.Editors = instance.RegisteredEditors; _factory = instance.Factory; _valueStore.ChildValueChanged += ValueStore_ChildValueChanged; _valueStore.ChangedAtKey += (o, e) => AnyValueChanged?.Invoke(this, e); Name.OnChange += _valueStore.SetValueName; }
private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e) { var changedSelection = false; var isPropertyBroadcastedExternally = false; if (e.PropertyName == nameof(SelectedInstance)) { var blocker = new object(); objectsBlockingChanges.Add(blocker); changedSelection = true; if (SelectedInstance != null) { selectedItemProperties.Clear(); AddPropertiesForType(selectedItemProperties, SelectedInstance.Type); // Check any properties that are checked by the instance foreach (var selectedProperty in SelectedInstance.SelectedProperties) { var propertyViewModel = SelectedItemProperties.FirstOrDefault(item => item.Name == selectedProperty); if (propertyViewModel != null) { propertyViewModel.IsChecked = true; } } SelectedPropertyManagementMode = SelectedInstance.PropertyManagementMode; } else { // If we notify this, then the json gets saved. We don't want that SelectedPropertyManagementMode = EntityManagementMode; } objectsBlockingChanges.Remove(blocker); } else if (e.PropertyName == nameof(IsRootSelected)) { // If it's set to true, make sure no instance is selected SelectedInstance = null; var blocker = new object(); objectsBlockingChanges.Add(blocker); changedSelection = true; if (IsRootSelected) { selectedItemProperties.Clear(); string type = GetFrbTypeForEntity(Entity); AddPropertiesForType(selectedItemProperties, type); foreach (var selectedProperty in this.EntityManagedProperties) { var propertyViewModel = SelectedItemProperties.FirstOrDefault(item => item.Name == selectedProperty); if (propertyViewModel != null) { propertyViewModel.IsChecked = true; } } SelectedPropertyManagementMode = EntityManagementMode; } objectsBlockingChanges.Remove(blocker); } else if (e.PropertyName == nameof(SelectedPropertyManagementMode)) { isPropertyBroadcastedExternally = true; if (SelectedInstance != null) { SelectedInstance.PropertyManagementMode = SelectedPropertyManagementMode; } else { EntityManagementMode = SelectedPropertyManagementMode; } } if (changedSelection && IsRootSelected == false && SelectedInstance == null) { selectedItemProperties.Clear(); } if (!changedSelection && RaiseChangeEvents && isPropertyBroadcastedExternally) { AnyValueChanged?.Invoke(e.PropertyName); } }
private void Item_ValueChanged(object sender, TArgs e) { AnyValueChanged?.Invoke(sender, e); }