internal void AddTriggerNode()
        {
            Type newClrObject = ClrNewObjectDialog.CreateNewClrObject(this.sceneViewModel, this.sceneViewModel.ProjectContext.ResolveType(ProjectNeutralTypes.BehaviorTriggerBase).RuntimeType, true);

            if (!(newClrObject != (Type)null))
            {
                return;
            }
            using (SceneEditTransaction editTransaction = this.sceneViewModel.CreateEditTransaction(StringTable.AddBehaviorCommandTriggerUndo))
            {
                BehaviorTriggerBaseNode behaviorTriggerBaseNode = (BehaviorTriggerBaseNode)this.sceneViewModel.CreateSceneNode(newClrObject);
                InvokeCommandActionNode commandActionNode       = (InvokeCommandActionNode)this.sceneViewModel.CreateSceneNode(ProjectNeutralTypes.InvokeCommandAction);
                commandActionNode.CommandName = this.CategoryName;
                behaviorTriggerBaseNode.Actions.Add((SceneNode)commandActionNode);
                if (ProjectNeutralTypes.BehaviorEventTriggerBase.IsAssignableFrom((ITypeId)behaviorTriggerBaseNode.Type))
                {
                    SceneNode sceneNode = (SceneNode)this.behaviorNode;
                    while (sceneNode != null && !(sceneNode is SceneElement))
                    {
                        sceneNode = sceneNode.Parent;
                    }
                    if (sceneNode != null)
                    {
                        sceneNode.EnsureNamed();
                        ((BehaviorEventTriggerBaseNode)behaviorTriggerBaseNode).SourceName = sceneNode.Name;
                    }
                }
                this.behaviorNode.GetCollectionForProperty(BehaviorHelper.BehaviorTriggersProperty).Add((SceneNode)behaviorTriggerBaseNode);
                editTransaction.Commit();
            }
            this.Rebuild();
            this.TriggerNodeView.MoveCurrentToLast();
        }
示例#2
0
        public BindingSceneNode CreateElementNameBinding(SceneNode targetNode)
        {
            BindingSceneNode binding = (BindingSceneNode)this.ViewModel.CreateSceneNode(PlatformTypes.Binding);
            ReferenceStep    selectedBindingField = this.SelectedBindingField;

            targetNode.EnsureNamed();
            binding.ElementName = targetNode.Name;
            binding.SetPath(selectedBindingField.Name);
            this.SetAdvancedPropertiesIfNeeded(binding);
            return(binding);
        }
示例#3
0
 public static void FixElementNameBindingsInStoredProperties(SceneNode source, SceneNode target, Dictionary <IPropertyId, SceneNode> properties)
 {
     foreach (KeyValuePair <IPropertyId, SceneNode> keyValuePair in properties)
     {
         BindingSceneNode bindingSceneNode = keyValuePair.Value as BindingSceneNode;
         if (bindingSceneNode != null && bindingSceneNode.SupportsElementName && bindingSceneNode.ElementName == source.Name)
         {
             target.EnsureNamed();
             bindingSceneNode.ElementName = target.Name;
         }
     }
 }
示例#4
0
        private static void CreateAndSetElementNameBinding(string propertyName, SceneNode node, Action <BindingSceneNode> setValue)
        {
            string description = string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.PropertyChangeUndoDescription, new object[1]
            {
                (object)propertyName
            });
            SceneViewModel viewModel = node.ViewModel;

            using (SceneEditTransaction editTransaction = viewModel.CreateEditTransaction(description))
            {
                node.EnsureNamed();
                editTransaction.Update();
                BindingSceneNode bindingSceneNode = viewModel.CreateSceneNode(PlatformTypes.Binding) as BindingSceneNode;
                bindingSceneNode.ElementName = node.Name;
                setValue(bindingSceneNode);
                editTransaction.Commit();
            }
        }