AddRule 類別
表示物件加入至模型時所呼叫的規則。
繼承階層架構
System.Object
Microsoft.VisualStudio.Modeling.Rule
Microsoft.VisualStudio.Modeling.AddRule
Microsoft.VisualStudio.Modeling.Diagrams.CommentShapeAddRule
Microsoft.VisualStudio.Modeling.Diagrams.NodeShape.ExpandCollapseNodeShapeWhenAddedToDiagramRule
Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeContainsNestedChildShapesAddRule
Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeHasRelativeChildShapesAddRule
Microsoft.VisualStudio.Modeling.Diagrams.ShapeElementAddRule
Microsoft.VisualStudio.Modeling.ElementDeserializedRule
命名空間: Microsoft.VisualStudio.Modeling
組件: Microsoft.VisualStudio.Modeling.Sdk.11.0 (在 Microsoft.VisualStudio.Modeling.Sdk.11.0.dll 中)
語法
'宣告
Public MustInherit Class AddRule _
Inherits Rule
public abstract class AddRule : Rule
AddRule 型別會公開下列成員。
建構函式
名稱 | 說明 | |
---|---|---|
AddRule | 初始化 AddRule 類別的執行個體。 |
回頁首
屬性
名稱 | 說明 | |
---|---|---|
FireBefore | true 如果變更發生預呈現時,就會執行這項規則。 (繼承自 Rule)。 | |
FireImmediately | true 如果這項規則將執行立即變更就會發生。 (繼承自 Rule)。 | |
FireOnLocalCommit | true 如果目前的交易認可時,就會執行這項規則。 (繼承自 Rule)。 | |
FireOnTopLevelCommit | true 如果當最上層交易認可時,就會執行這項規則。 (繼承自 Rule)。 | |
FireTime | 取得或設定時應執行的規則。通常,設定 RuleOn 屬性。 (繼承自 Rule)。 | |
IsEnabled | 取得或設定是否啟用該規則。預設情況下,通常則為 true,但您可以將它初始化為 false,RuleOn 屬性中。 (繼承自 Rule)。 | |
Priority | 取得指派給該規則的優先順序。若要決定在交易結束時執行規則的順序會幫助。 (繼承自 Rule)。 |
回頁首
方法
名稱 | 說明 | |
---|---|---|
CompareTo(Object) | 比較規則套用至另一個物件。 (繼承自 Rule)。 | |
CompareTo(Rule) | 比較規則套用至另一個規則,透過它們的 Id。 (繼承自 Rule)。 | |
ElementAdded | 系統會通知的接聽程式已使用的規則。 | |
Equals(Object) | 驗證規則是否等於另一個物件。 (繼承自 Rule)。 | |
Equals(Rule) | 驗證規則是否等於另一個規則。 (繼承自 Rule)。 | |
Finalize | 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。 | |
GetHashCode | 取得雜湊程式碼的規則。 (繼承自 Rule)。 | |
GetType | 取得目前執行個體的 Type。 (繼承自 Object)。 | |
MemberwiseClone | 建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 Object)。 | |
ToString | 傳回表示目前物件的字串。 (繼承自 Object)。 |
回頁首
備註
項目、 關聯性、 圖形、 連接器或圖表加入至模型時,便會觸發這種類型的規則。
A RuleOnAttribute放在類別上的屬性表示何種物件規則適用於,而且應該引發規則的時機。
此規則時,會呼叫指定之型別的物件加入至模型時,是否在 UI 中,或以程式設計方式加入。
從檔案載入時將項目,也會觸發規則。如果您想要避免在回應在這種情況下,這些程式碼加入您的 ElementAdded:
// Ignore this call if we're currently loading a model:
if (e.ModelElement.Store.TransactionManager
.CurrentTransaction.IsSerializing)
return;
如需詳細資訊與範例,請參閱規則傳播模型內的變更。
範例
在下列範例中,規則定義衍生自AddRule。加入至圖表時,此規則會設定圖形的位置。
RuleOn屬性指示的最上層交易認可時,應該引發規則。
[RuleOn(typeof(ParentShapeContainsNestedChildShapes), FireTime = TimeToFire.TopLevelCommit)]
public class ShapeAddedToDiagramRule : AddRule
{
private double offset = 0.25;
private PointD location = new PointD(0.25, 0.25);
public override void ElementAdded(ElementAddedEventArgs e)
{
Shape shape = null;
ParentShapeContainsNestedChildShapes nestedLink = e.ModelElement as ParentShapeContainsNestedChildShapes;
if (nestedLink != null)
{
shape = nestedLink.NestedChildShapes as Shape;
}
if (shape != null && shape.Diagram != null)
{
// Expand the shape and move it to its new position
shape.IsExpanded = true;
shape.Location = new PointD(location.X, location.Y + offset);
// Adjust the height offset for the size of the shape
// (I'm assuming that the DefaultContainerMargin
// provides for a decent spacing between the shapes)
offset += shape.Size.Height + shape.Diagram.DefaultContainerMargin.Height;
}
}
}
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。不保證任何執行個體成員是安全執行緒。
請參閱
參考
Microsoft.VisualStudio.Modeling 命名空間