NodeShape.BoundsRules 属性

命名空间:  Microsoft.VisualStudio.Modeling.Diagrams
程序集:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0(在 Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll 中)

语法

声明
Public Overridable ReadOnly Property BoundsRules As BoundsRules
public virtual BoundsRules BoundsRules { get; }

属性值

类型:Microsoft.VisualStudio.Modeling.Diagrams.BoundsRules

备注

重写在形状选件类的 BoundsRules 约束用户如何移动或调整形状大小。 例如,可以阻止用户将形状不足或一个特定区域,或者可以限制了宽度和高度到指定范围或比例。 规则应用于的,当用户拖动形状或其端或角时,因此,用户看到重影的移动模型是限制根据您的规则。

此属性应返回一个选件类的实例实现 BoundsRules。 您的 BoundsRules 实现应具有方法 M:Microsoft.VisualStudio.Modeling.Diagrams.BoundsRules.GetCompliantBounds(Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement,Microsoft.VisualStudio.Modeling.Diagrams.RectangleD)。 当用户拖动形状时,此方法重复调用。 该方法提供建议的区域,表示范围并确定用户尝试设置。 应该返回您的规则允许的区域。

如果 BoundsRules 返回 nullnull 引用(在 Visual Basic 中为 Nothing),约束不适用。

备注

如果需要响应大小或位置的更改,则发生后,如调整相邻形状的位置,请创建 ChangeRule 观察 AbsoluteBounds 属性。请参见 AbsoluteBoundsDomainPropertyId 中的示例。如果要在应用程序代码以外的值,请重写 OnAbsoluteBoundsChanged

示例

此示例约束选件类 MyShape 形状具有指定的最小宽度和特定分配高宽。

// MyShape is defined in DSL Definition.
public partial class MyShape 
{
    public override BoundsRules BoundsRules
    {
        get
        {
            return new MyShapeBoundsRule();
        }
    }
}
public class MyShapeBoundsRule : BoundsRules
{
    public override RectangleD GetCompliantBounds(ShapeElement shape, RectangleD proposedBounds)
    {
       // Do not modify bounds if reading from file.
        if (shape.Store.InSerializationTransaction)
          return proposedBounds;
        MyShape myShape = shape as MyShape;
        if (myShape == null) return proposedBounds;
        RectangleD approvedBounds = new RectangleD();
        // In this rule, any Location is OK:
        approvedBounds.Location = proposedBounds.Location;
        // But the height and width are constrained:
        approvedBounds.Height = Math.Max(proposedBounds.Height, 1.0);
        approvedBounds.Width = approvedBounds.Height * 1.618;
        return approvedBounds;
    }    
 }

.NET Framework 安全性

请参阅

参考

NodeShape 类

Microsoft.VisualStudio.Modeling.Diagrams 命名空间