public static void CheckAttribute(object sender, CheckAttributeEnventArgs e) { AttributesToCalculateProximity = e.SelectedAttributes; if (e.SelectedAttributes.Count == 0) { Proximity = null; } }
/// <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); } }
/// <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) { List<Dissimilarity> _dissTemp = LoadDissimilarities(); ElementType _elementType = Dissimilarity.GetAttributesType(e.SelectedAttributes); List<Dissimilarity> _source =new List<Dissimilarity>(); //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 Dissimilarity.GetAttributesType va retornar Numeric, porque como la lista esta vacia no hay ninguno que no sea numeric, y eso //esta mal, verificar el metodo Dissimilarity.GetAttributesType para ver lo que acabo de decir, cuando la lista que le paso esta vacia if (e.SelectedAttributes.Count > 0) { foreach (Dissimilarity _diss in _dissTemp) if (_diss.AdmissibleElementType == ElementType.Mixt || _diss.AdmissibleElementType == _elementType) _source.Add(_diss); } this.cb_Dissimilarities.ItemsSource = null; this.cb_Dissimilarities.ItemsSource = _source; this.cb_Dissimilarities.DisplayMemberPath = "Name"; if (Dissimilarities.Count > 0) this.cb_Dissimilarities.SelectedIndex = 0; }
public static void CheckAttribute(object sender, CheckAttributeEnventArgs e) { AttributesToCalculateProximity = e.SelectedAttributes; if (e.SelectedAttributes.Count == 0) Proximity = null; }