¿Cuál es el método preferido y/o más eficiente para detectar un cambio en la tabla de contenidos en ArcMap utilizando ArcObjects? Mi implementación actual se basa en un diccionario con los nombres e índices de las capas.
public static Dictionary<string, int> layerEnumerator()
{
IEnumLayer enumLayer = ArcMap.Document.FocusMap.get_Layers(null, false);
enumLayer.Reset();
ILayer layer = enumLayer.Next();
Dictionary<string, int> layerDictionary = new Dictionary<string, int>();
int lyrNdx = 0;
while (!(layer == null))
{
if (!(layerDictionary.ContainsKey(layer.Name)))
{
layerDictionary.Add(layer.Name, lyrNdx);
}
lyrNdx++;
layer = enumLayer.Next();
}
return layerDictionary;
}
Por lo general, llamo a esto cuando necesito encontrar la posición de una capa específica en la TdC. ¿Existe un medio más eficiente para recoger lo que hay en la TdC en un momento dado (como un evento para el Contenido de la TdC Cambiado)? La solución que he proporcionado arriba parece inadecuada e ineficiente en el mejor de los casos.