ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Core.Events Namespace / ProjectItemsChangedEventArgs Class
Members Example Version

ProjectItemsChangedEventArgs Class
Represents the project on which the ProjectItemsChangedEvent is operating
Object Model
ProjectItemsChangedEventArgs ClassItem Class
Syntax
public class ProjectItemsChangedEventArgs : System.EventArgs 
Remarks

When the ProjectItemsChangedEvent is fired, ProjectItemsChangedEventArgs is returned to subscribers of the event

Example
LayoutAdded_ProjectItemsChangedEvent_Add
//Report the event args when a layout is added.

//At 2.x - ArcGIS.Desktop.Layouts.Events.LayoutAddedEvent.Subscribe((args) =>
//{
//  System.Windows.MessageBox.Show("LayoutAddedEvent:" +
//    Environment.NewLine +
//    "   arg Layout: " + args.Layout.Name);
//});

//Use ProjectItemsChangedEvent at 3.x
ArcGIS.Desktop.Core.Events.ProjectItemsChangedEvent.Subscribe((args) => {
  //Layout added. Layout removed would be NotifyCollectionChangedAction.Remove
  if (args.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add &&
      args.ProjectItem is LayoutProjectItem layoutProjectItem)
  {
    var layout_name = layoutProjectItem.Name; 
    var layout = layoutProjectItem.GetLayout();
    System.Diagnostics.Debug.WriteLine($"Layout Added: {layout_name}");
  }
});
LayoutRemoved_ProjectItemsChangedEvent_Remove
//Report the event args when a layout is removed.

//At 2.x - ArcGIS.Desktop.Layouts.Events.LayoutRemovedEvent.Subscribe((args) =>
//{
//  System.Windows.MessageBox.Show("LayoutViewEvent:" +
//  Environment.NewLine +
//  "   arg Layout: " + args.Layout.Name);
//});

//Use ProjectItemsChangedEvent at 3.x
ArcGIS.Desktop.Core.Events.ProjectItemsChangedEvent.Subscribe((args) => {
  //Layout added. Layout removed would be NotifyCollectionChangedAction.Remove
  if (args.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove &&
      args.ProjectItem is LayoutProjectItem layoutProjectItem)
  {
    var layout_name = layoutProjectItem.Name;
    System.Diagnostics.Debug.WriteLine($"Layout Removed: {layout_name}");
  }
});
LayoutRemoved_ProjectItemsChangedEvent_Removing
//Report the event args when a layout is about to be removed.

//At 2.x - ArcGIS.Desktop.Layouts.Events.LayoutRemovingEvent.Subscribe((args) =>
//{
//  if (args.LayoutPath == "CIMPATH=layout.xml")
//  {
//    args.Cancel = true;
//  }
//  return Task.FromResult(0);
//});

//At 3.x use ProjectItemRemovingEvent
ArcGIS.Desktop.Core.Events.ProjectItemRemovingEvent.Subscribe((args) =>
{
  var layoutItems = args.ProjectItems.ToList().OfType<LayoutProjectItem>() ?? new List<LayoutProjectItem>();
  var layoutName = "DontDeleteThisOne";
  foreach(var layoutItem in layoutItems)
  {
    if (layoutItem.Name == layoutName)
    {
      args.Cancel = true;//Cancel the remove
      break;
    }
  }
  return Task.FromResult(0);
});
Inheritance Hierarchy

System.Object
   System.EventArgs
      ArcGIS.Desktop.Core.Events.ProjectItemsChangedEventArgs

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also