Zunächst möchte ich mich für den cryptischen Titel entschuldigen, aber mir ist kein besserer eingefallen. Im Grunde spiegelt er eine Frage wieder die ich mir seit einigen Tagen zu beantworten versucht habe, wobei ich aber an einer Eigenart von MS Chart immer wieder gescheitert bin: Komplexität.
Genauer geht es mir um eine Besonderheit beim Kreisdiagram (wobei dies auch bei vielen anderen vorkommt). Dieses bietet, sehr versteckt, die Möglichkeit einzelne Bestandteile aus dem Kreis heraus zu ziehen um diese hervor zu heben.
Bisher dachte ich, dies ginge gar nicht, bis ich ein entsprechendes Bild im Internet gesehen habe. Bloß wie man vorgeht stand leider nicht dabei. Die Suche im Internet ist schon an dem passenden Begriffen gescheitert und auch das Durchprobieren aller möglichen Properties brachte keinen Erfolg. Bis mir bei den Datenpunkten die CustomProperties auffielen und siehe da:
var dataQualityA = new DataPoint(series); dataQualityA.CustomProperties = "Exploded = true";
oder besser:
var dataQualityA = new DataPoint(series); dataQualityA["Exploded"] = "true";
Grund für dieses eigenartige Vorgehen ist, dass man bei MS Chart über den ChartType einer Series* bestimmt wie diese aussieht. Nun hat ein Kreisdiagram aber ein anderes Verhalten als ein Säulendiagram und da man nicht für jeden Typen eine neue Series Klasse anlegen kann, muss man sich nun halt anders behelfen.
Nun bleibt aber die Frage warum man nicht für jeden Typ eine eigene Serienklasse gemacht hat. Dies ist umso komischer, da es bei den Annotations genau so funktioniert. Annotations sind Symbole, Texte, Linien oder Bilder die einem Diagram hinzugefügt werden können. Will man also ein Rechteck hinzufügen, hat dieses eine andere Klasse als zum Beispiel ein Bild.
Also wieder die Frage: Warum nicht eine Series Basisklasse von der die entsprechenden SeriesColum, SeriesLine usw. ableiten? Ich habe keine Ahnung. Am ehesten würde ich als Grund akzeptieren, dass es auch Charttypen ohne CustomProperties gibt. Aber selbst das erscheint mir eher wie eine faule Ausrede. Dann doch lieber das alt bekannte: „Das ist historisch bedingt…“. Na dann: Ab zurück ins Mittelalter…
*Series: eine Series ist im Grunde ein Graph innerhalb des Koordinatensystems. Sie enthält unter anderem die darzustellenden Daten und eben eine Definition in welcher Form (Säule, Linie, Kreis, …) sie angezeigt wird.