public void Rebuild() { SceneNodeProperty sceneNodeProperty = this.editingProperty as SceneNodeProperty; BehaviorTargetedTriggerActionNode triggerActionNode = sceneNodeProperty != null ? sceneNodeProperty.SceneNodeObjectSet.RepresentativeSceneNode as BehaviorTargetedTriggerActionNode : (BehaviorTargetedTriggerActionNode)null; this.properties = triggerActionNode == null || triggerActionNode.TargetNode == null ? (IEnumerable <ReferenceStepPropertyInformation>)null : ReferenceStepPropertyInformation.GetPropertiesForType(triggerActionNode.TargetNode.TrueTargetTypeId); if (this.Rebuilt == null) { return; } this.Rebuilt((object)this, EventArgs.Empty); }
private void Rebuild() { if (this.EditingProperty == null) { return; } this.EditingProperty.Recache(); this.states.Clear(); if (this.EditingProperty.ObjectSet.IsHomogenous && this.EditingProperty.ObjectSet.Count > 0) { BehaviorTargetedTriggerActionNode triggerActionNode = this.EditingProperty.SceneNodeObjectSet.Objects[0] as BehaviorTargetedTriggerActionNode; if (triggerActionNode == null || triggerActionNode.TargetObject == null && string.IsNullOrEmpty(triggerActionNode.TargetName)) { SceneNode editingContainer = this.viewModel.ActiveEditingContainer; SceneNode hostNode = VisualStateManagerSceneNode.GetHostNode(this.viewModel.ActiveEditingContainer); if (hostNode != null) { foreach (VisualStateGroupSceneNode stateGroupSceneNode in (IEnumerable <VisualStateGroupSceneNode>)VisualStateManagerSceneNode.GetStateGroups(hostNode)) { foreach (SceneNode sceneNode in (IEnumerable <VisualStateSceneNode>)stateGroupSceneNode.States) { this.states.Add(new StateInfo(sceneNode.Name, stateGroupSceneNode.Name)); } } } ControlTemplateElement controlTemplateElement = this.viewModel.ActiveEditingContainer as ControlTemplateElement; if (controlTemplateElement != null) { IType type = this.viewModel.ProjectContext.ResolveType(controlTemplateElement.ControlTemplateTargetTypeId); foreach (DefaultStateRecord defaultStateRecord in ProjectAttributeHelper.GetDefaultStateRecords(type, (ITypeResolver)(this.viewModel.ProjectContext as ProjectContext))) { this.AddStateInfoIfNeeded(defaultStateRecord.StateName, defaultStateRecord.GroupName, type); } } } else if (triggerActionNode.TargetNode != null && triggerActionNode.TargetNode.IsViewObjectValid) { IViewControl viewControl = triggerActionNode.TargetNode.ViewObject as IViewControl; if (viewControl != null) { object stateManagerHost = viewControl.VisualStateManagerHost; if (stateManagerHost != null) { foreach (object group in (IEnumerable)StatePickerEditor.GetVisualStateGroups(stateManagerHost, (ITypeResolver)triggerActionNode.ProjectContext)) { string stateGroupName = this.GetStateGroupName(group); foreach (object state in (IEnumerable)this.GetStates(group)) { this.states.Add(new StateInfo(this.GetStateName(state), stateGroupName)); } } } IType type = triggerActionNode.TargetNode.ProjectContext.GetType(triggerActionNode.TargetNode.TargetType); foreach (DefaultStateRecord defaultStateRecord in ProjectAttributeHelper.GetDefaultStateRecords(triggerActionNode.TargetNode.Type, (ITypeResolver)(this.viewModel.ProjectContext as ProjectContext))) { this.AddStateInfoIfNeeded(defaultStateRecord.StateName, defaultStateRecord.GroupName, type); } } } } this.states.RemoveAll((Predicate <StateInfo>)(stateInfo => { if (!string.IsNullOrEmpty(stateInfo.GroupName) && !string.IsNullOrEmpty(stateInfo.StateName) && !stateInfo.GroupName.StartsWith(VisualStateManagerSceneNode.SketchFlowAnimationXamlDelimiter, StringComparison.Ordinal)) { return(stateInfo.StateName.StartsWith("_BlendEditTimeState-", StringComparison.Ordinal)); } return(true); })); this.statesView = CollectionViewSource.GetDefaultView(this.states); PropertyGroupDescription groupDescription = new PropertyGroupDescription(); groupDescription.PropertyName = "GroupName"; this.statesView.GroupDescriptions.Clear(); this.statesView.GroupDescriptions.Add((GroupDescription)groupDescription); this.OnPropertyChanged("CurrentState"); this.OnPropertyChanged("States"); }