internal void RegisterAttachedProperty <T>(string propertyName, bool isBrowsable, bool isVisibleToModelItem, T defaultValue) { AttachedProperty <T> attachedProperty = new AttachedProperty <T> { IsBrowsable = isBrowsable, IsVisibleToModelItem = isVisibleToModelItem, Name = propertyName, OwnerType = modelType, Getter = (modelItem) => { T result = (T)viewStateService.RetrieveViewState(modelItem, propertyName); return(result == null ? defaultValue : result); }, Setter = (modelItem, value) => { if (value == null || value.Equals(defaultValue)) { viewStateService.StoreViewStateWithUndo(modelItem, propertyName, null); } else { viewStateService.StoreViewStateWithUndo(modelItem, propertyName, value); } } }; attachedPropertiesService.AddProperty(attachedProperty); attachedProperties.Add(propertyName, attachedProperty); }
protected override void OnModelItemChanged(object newItem) { ViewStateService viewStateService = this.Context.Services.GetService <ViewStateService>(); if (viewStateService != null) { // Make StateMachine designer always collapsed by default, but only if the user didn't explicitly specify collapsed or expanded. bool?isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey); if (isExpanded == null) { viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, false); } } base.OnModelItemChanged(newItem); }
void UpdateViewState(string oldValue, string newValue) { EditingContext context = this.flowSwitchModelItem.GetEditingContext(); ViewStateService viewStateService = (ViewStateService)context.Services.GetService(typeof(ViewStateService)); if (viewStateService != null) { object viewState = viewStateService.RetrieveViewState(this.flowSwitchModelItem, oldValue); if (viewState != null) { viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, oldValue, null); viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, newValue, viewState); } } }
void OnLoaded(object sender, RoutedEventArgs e) { this.Context.Items.Subscribe <Selection>(OnSelectionChanged); this.ModelItem.PropertyChanged += OnModelItemPropertyChanged; ViewStateService viewStateService = this.Context.Services.GetService <ViewStateService>(); foreach (ModelItem modelItem in this.ModelItem.Properties["Cases"].Dictionary.Properties["ItemsCollection"].Collection) { bool?isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey); if (isExpanded != null && isExpanded.Value) { this.SelectedCase = modelItem; CollapseDefaultView(); break; } } }
void OnLoaded(object sender, RoutedEventArgs e) { this.Context.Items.Subscribe <Selection>(OnSelectionChanged); // at this time, this.ModelItem is already set this.ModelItem.PropertyChanged += OnModelItemPropertyChanged; this.ModelItem.Properties[CatchesPropertyName].Collection.CollectionChanged += OnModelItemCollectionChanged; ViewStateService viewStateService = this.Context.Services.GetService <ViewStateService>(); foreach (ModelItem modelItem in this.ModelItem.Properties["Catches"].Collection) { bool?isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey); if (isExpanded != null && isExpanded.Value) { this.SelectedCatch = modelItem; CollapseTryView(); CollapseFinallyView(); break; } } }