コード例 #1
0
 /// <summary>
 /// Gets called when the model element gets deleted
 /// </summary>
 /// <param name="e">The event data</param>
 protected virtual void OnDeleted(UriChangedEventArgs e)
 {
     foreach (var child in Children.Reverse())
     {
         var childME = child as ModelElement;
         if (childME != null)
         {
             Uri oldChildUri = null;
             if (e.OldUri != null)
             {
                 var uriBuilder = new UriBuilder(e.OldUri);
                 uriBuilder.Fragment = uriBuilder.Fragment.Substring(1) + '/' + childME.CreateUriWithFragment(null, false, this).OriginalString;
                 oldChildUri         = uriBuilder.Uri;
             }
             var args = new UriChangedEventArgs(oldChildUri);
             childME.OnDeleting(args);
             childME.OnDeleted(args);
         }
     }
     Deleted?.Invoke(this, e);
     UnsetFlag(ModelElementFlag.Deleting);
 }
コード例 #2
0
 /// <summary>
 /// Deletes the current model element
 /// </summary>
 public virtual void Delete()
 {
     if (!IsFlagSet(ModelElementFlag.Deleting))
     {
         SetFlag(ModelElementFlag.Deleting);
         // do not create event args when nobody listens
         if (IsFlagSet(ModelElementFlag.RaiseBubbledChanges) || Deleted != null || Deleting != null)
         {
             Uri originalAbsoluteUri = null;
             if (IsFlagSet(ModelElementFlag.RequireUris))
             {
                 originalAbsoluteUri = AbsoluteUri;
             }
             var e = new UriChangedEventArgs(originalAbsoluteUri);
             OnDeleting(e);
             OnDeleted(e);
             // only bubble deletion for deleted root
             OnBubbledChange(BubbledChangeEventArgs.ElementDeleted(this, e));
         }
         SetParent(null);
     }
 }
コード例 #3
0
 /// <summary>
 /// Gets called before the model element gets deleted
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnDeleting(UriChangedEventArgs e)
 {
     Deleting?.Invoke(this, e);
 }