NodeShape::AbsoluteBoundsDomainPropertyId Field

 

The GUID used to identify the AbsoluteBounds domain property.

Namespace:   Microsoft.VisualStudio.Modeling.Diagrams
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)

public:
static initonly Guid AbsoluteBoundsDomainPropertyId

Field Value

Type: System::Guid

Use this in a T:Microsoft.VisualStudio.Modeling.Diagrams.ChangeRule to respond to changes in the absolute bounds. A Change Rule is performed inside the transaction that triggered the rule, usually just before the end of the transaction.


// This rule responds to changes in location and size of MyShape, 
// which is declared in DSL Definition.
[RuleOn(typeof(MyShape))]
public sealed class MyShapeMoveRule : ChangeRule
{
  public override void ElementPropertyChanged(ElementPropertyChangedEventArgs e)
  {
    MyShape shape = e.ModelElement as MyShape;
    if (shape == null) return;
    if (shape.Store.InSerializationTransaction) return;
    if (!shape.IsNestedChild) return;
    if (e.DomainProperty.Id == NodeShape.AbsoluteBoundsDomainPropertyId)
    {
      shape.ParentShape.NestedChildShapes.Move(shape,
        shape.ParentShape.NestedChildShapes.Count - 1);
      // this.Diagram.NeedsRenumber should be set after
      // re-ordering the child shapes. It should also be
      // set after the user invokes Undo or Redo; but 
      // the rule is not called in Undo or Redo. 
      // So instead, we will put the NeedsRenumber call
      // in an override of OnAbsoluteBoundsChanged, which
      // is always called.
    }
  }
}
// Register the rule.
partial class InstanceDiagramsDomainModel
{
  protected override Type[] GetCustomDomainModelTypes()
  {
    List<Type> types = new List<Type>(base.GetCustomDomainModelTypes());
    types.Add(typeof(MyShapeMoveRule));
    return types.ToArray();
  }
}

partial class MyShape // Declared in DSL Definition
{
  // Called even in Undo or Redo. 
  public override void OnAbsoluteBoundsChanged(AbsoluteBoundsChangedEventArgs e)
  {
    base.OnAbsoluteBoundsChanged(e);
    this.Diagram.NeedsRenumber = true;
  }
}

Return to top
Show: