2016-04-23 7 views
0

Ich habe einige Anmerkungen in meinem Diagramm, 3 um genau zu sein. Zwei davon sind Textanmerkungen, die ich nur sichtbar halten muss, und das tun sie auch.SciChart - LineArrowAnnotation verschwindet nicht, wenn die Sichtbarkeit auf "false" gesetzt ist

Aber ich habe auch eine LineArrowAnnotation, die ich je nach dem Zustand meines zugrunde liegenden Datenmodells erscheinen und verschwinden muss. Ich habe die Visibility-Eigenschaft an eine bool-Eigenschaft im View-Modell gebunden.

<sci:LineArrowAnnotation Visiblity="{Binding ArrowVisible, Converter={StaticResource BooleanToVisibilityConverter}}" 

F12 Drücken auf die "ArrowVisible" Eigenschaft in XAML-Editor nimmt mich an die entsprechende Stelle in der View-Modell. Ich habe im Debugger überprüft, dass der Wert meiner Ansichtsmodell-Eigenschaft gemäß meinen Erwartungen festgelegt ist und auf den Getter für die Eigenschaft zugegriffen wird, wenn eine Änderung ausgelöst wird.

Wie Sie auf dem Screenshot sehen können, kann ich den Pfeil positionieren, indem ich seine X1, X2, Y1, Y2 Koordinaten (links und Mitte) manipuliere. Aber wenn ich versuche, die Sichtbarkeit auf die gleiche Weise einzustellen, ist die Spitze des Pfeils immer noch sichtbar (rechts). Ich gehe davon aus, dass der gesamte Pfeil tatsächlich sichtbar ist, aber da die Änderung, die den Pfeil deaktiviert, auch alle Koordinaten auf 0 setzt, wird sie am Rand des Diagramms angezeigt und ist daher nur teilweise sichtbar.

Als Workaround habe ich sogar versucht, die Strichstärke der Anmerkung zu binden, indem ich sie auf 0 setze, wenn der Pfeil ausgeblendet werden soll.

StrokeThickness="{Binding ArrowStrokeThickness}" 

Auch dies hatte keinen Effekt. Es diente jedoch dazu, zu überprüfen, dass die Bindung korrekt ist und der Wert gelesen wird, da ein Haltepunkt im ArrowStrokeThickness-Getter wie erwartet getroffen wurde. (Ich habe diese Eigenschaft nur für diese Problemumgehung hinzugefügt, sodass von keiner Stelle darauf zugegriffen werden kann).

Ich weiß, dass ich es umgehen könnte, indem ich den Pfeil außerhalb des sichtbaren Bereichs platziere, wenn er nicht sichtbar sein soll, aber das ist eine hässliche Lösung, die mich dazu zwingt, mein Ansichtsmodell zu hacken.

Ich möchte hinzufügen, dass, während ich noch SciChart Version 3.31 benutze, ich die Lösung kurz auf Version 4.0.5 aktualisiert hatte (ich habe diese Änderung seither rückgängig gemacht) und die Pfeilannotation verhält sich das Gleiche.

Edit: gelöscht Bild aus Gründen des geistigen Eigentums.

Antwort

0

Diese Frage wurde in den SciChart Foren here, here, here und here oft gestellt.

Die akzeptierte Lösung besteht darin, an Annotation.IsHidden (boolean DependencyProperty) zu binden, um eine Anmerkung ein- oder auszublenden.

+1

Danke. Ursprünglich wollte ich in den SciChart Foren nachfragen, aber du scheinst hier lieber Fragen zu beantworten. Nächstes Mal werde ich ein bisschen mehr suchen, bevor ich frage. – Shaggydog

0

So fand ich heraus, dass die LineArrowAnnotation die Visibility-Eigenschaft von UIElement erbt. Es scheint, dass es das nicht unterstützen sollte. Entweder das oder die Implementierung ist falsch. Wie auch immer, ich habe mir angesehen, welche Eigenschaften eigentlich zur LineArrowAnnotation-Klasse gehören, und ich habe es geschafft, die Pfeilspitze zu verbergen, indem ich die HeadLength-Eigenschaft verbinde und sie auf 0 setze, wenn der Pfeil versteckt sein soll.