次の方法で共有


NodeShape.BoundsRules プロパティ

外接する四角形のサイズと位置をユーザーが更新する方法を制約するバインド規則。 オーバーライドして 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)を返す場合は適用されません。

注意

発生した後、サイズや位置の変更に応答する場合は、たとえば、隣接した図形の位置を調整するには、AbsoluteBounds のプロパティを確認するように ChangeRule を作成します。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 名前空間