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 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关详细信息,请参阅通过部分受信任的代码使用库。