ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / GroupLayer Class / HasSymbolLayerDrawingAdded Method
Example Version

HasSymbolLayerDrawingAdded Method (GroupLayer)
Determine whether the group layer has Symbol Layer Drawing added. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public ValueTuple<bool,bool> HasSymbolLayerDrawingAdded()

Return Value

Returns a tuple (addedOnLayer, addedOnParent). addedOnLayer will be True if the group layer has SLD added. addedOnParent will be true if the group layer is participating in SLD controlled by a parent group layer with SLD added.
Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Remarks
The tuple returns two values (addedOnLayer, addedOnParent). If a group layer has SLD added then tuple.addedOnLayer will be true. If the group layer is the child of a parent group layer that has SLD added then tuple.addedOnLayer will be false and tuple.addedOnParent will be true. If a group layer, or a parent group layer, had SLD added but it contains invalid identifiers on the symbol layers then HasSymbolLayerDrawingAdded() will return false (for the respective tuple value(s)).
Use CanAddSymbolLayerDrawing to determine if a group layer can have Symbol Layer Drawing, SLD, added.
Example
Determine if a layer has SLD added
//SLD can be added to feature layers and group layers
//For a group layer, SLD controls all child feature layers
//that are participating in the SLD

//var featLayer = ...;//retrieve the feature layer
//var groupLayer = ...;//retrieve the group layer
QueuedTask.Run(() =>
{
  //Check if the layer has SLD added -returns a tuple
  var tuple = featLayer.HasSymbolLayerDrawingAdded();
  if (tuple.addedOnLayer)
  {
    //SLD is added on the layer
  }
  else if (tuple.addedOnParent)
  {
    //SLD is added on the parent (group layer) - 
    //check parent...this can be recursive
    var parentLayer = GetParentLayerWithSLD(featLayer.Parent as GroupLayer);
    /*
     * 
   //Recursively get the parent with SLD
   public GroupLayer GetParentLayerWithSLD(GroupLayer groupLayer) 
   {
     if (groupLayer == null)
       return null;
     //Must be on QueuedTask
     var sld_added = groupLayer.HasSymbolLayerDrawingAdded();
     if (sld_added.addedOnLayer)
       return groupLayer;
     else if (sld_added.addedOnParent)
       return GetParentLayerWithSLD(groupLayer.Parent as GroupLayer);
     return null;
   }
  */
  }
});
Enable/Disable SLD
QueuedTask.Run(() =>
{
  //A layer may have SLD added but is not using it
  //HasSymbolLayerDrawingAdded returns a tuple - to check
  //the layer has SLD (not its parent) check addedOnLayer
  if (featLayer.HasSymbolLayerDrawingAdded().addedOnLayer)
  {
    //the layer has SLD but is the layer currently using it?
    //GetUseSymbolLayerDrawing returns a tuple - useOnLayer for 
    //the layer (and useOnParent for the parent layer)
    if (!featLayer.GetUseSymbolLayerDrawing().useOnLayer)
    {
      //enable it
      featLayer.SetUseSymbolLayerDrawing(true);
    }
  }

  //Enable/Disable SLD on a layer parent
  if (featLayer.HasSymbolLayerDrawingAdded().addedOnParent)
  {
    //check parent...this can be recursive
    var parent = GetParentLayerWithSLD(featLayer.Parent as GroupLayer);
    if (parent.GetUseSymbolLayerDrawing().useOnLayer)
      parent.SetUseSymbolLayerDrawing(true);
  }
  /*
   * 
   //Recursively get the parent with SLD
   public GroupLayer GetParentLayerWithSLD(GroupLayer groupLayer) 
   {
     if (groupLayer == null)
       return null;
     //Must be on QueuedTask
     var sld_added = groupLayer.HasSymbolLayerDrawingAdded();
     if (sld_added.addedOnLayer)
       return groupLayer;
     else if (sld_added.addedOnParent)
       return GetParentLayerWithSLD(groupLayer.Parent as GroupLayer);
     return null;
   }
  */
});
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also