/// <summary> /// Este metodo esta engachado al evento que lanza el AttributesVisualizer, cuando se chequea o se deschequea algun atributo /// para que este mismo control se actualice sobre las Disimilitud que debe mostrar, que coincida su tipo con la de los atributos chequeados /// </summary> public void CheckAttributes(object sender, CheckAttributeEnventArgs e) { try { List <Proximity> _dissTemp = LoadProximities(); ElementType _elementType = Proximity.GetAttributesType(e.SelectedAttributes); List <Proximity> _source = new List <Proximity>(); //en el caso que le ponga de ItemsSource (al listView de atributes en el control AttributesVisualizer) NULL, entonces e.SelectedAttributes esta vacio //por tanto en el metodo Proximity.GetAttributesType va retornar Numeric, porque como la lista esta vacia no hay ninguno que no sea numeric, y eso //esta mal, verificar el metodo Proximity.GetAttributesType para ver lo que acabo de decir, cuando la lista que le paso esta vacia if (e.SelectedAttributes.Count > 0) { foreach (Proximity _prox in _dissTemp) { if (_prox.AdmissibleElementType == ElementType.Mixt || _prox.AdmissibleElementType == _elementType) { _source.Add(_prox); } } } //Esto es lo que se utiliza en UpdateProximities, ya que ahora ademas de cumplir las restricciones de los attributes, //tambien hay que verificar que el algoritmo que se seleccione pueda trabajar con esa proximidad CurrentProximities = _source; this.cb_Proximities.ItemsSource = null; this.cb_Proximities.ItemsSource = _source; this.cb_Proximities.DisplayMemberPath = "Name"; if (_source.Count > 0) { this.cb_Proximities.SelectedIndex = 0; } else { Enviroment.Proximity = null; } //Esto es porque si se me queda seleccionado el algoritmo Metis, cuando se actualizan las proximidades //(si se selecciona o deseleccion un attribute) //se me quedan para el algoritmo Metis todas las que se puedan cargar, esto es porque no se selecciono un algoritmo, //entonces para que se actualicen debo seleccionar otro algoritmo. //this.tv_ClusterAlgs.ItemsSource = null; //this.tv_ClusterAlgs.ItemsSource = new ListClusterTree(); this.tv_ClusterAlgs_SelectedItemChanged(null, null); } catch (Exception _ex) { GeneralTools.Tools.WriteToLog(_ex); } }