SciChart - 当可见性设置为 false 时,LineArrowAnnotation 不会消失

SciChart - LineArrowAnnotation not disappearing when visibility is set to false

我的图表中有一些注释,准确地说是 3 个。其中两个是文本注释,我只需要保持可见,这就是他们正在做的。

但我还有一个 LineArrowAnnotation,我需要根据我的基础数据模型的状态显示和消失它。我已将 Visibility 属性 绑定到视图模型中的 bool 属性。

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

在 Xaml 编辑器的 "ArrowVisible" 属性 上按 F12 将我带到视图模型中的适当位置。我已经在调试器中验证了我的视图模型 属性 的值是根据我的期望设置的,并且在触发更改时访问 属性 的 getter。

正如您在屏幕截图中看到的那样,我可以通过操纵箭头的 X1、X2、Y1、Y2 坐标(左侧和中心)来定位箭头。但是如果我尝试以相同的方式设置可见性,箭头的尖端仍然可见(右)。我假设整个箭头实际上是可见的,但由于禁用箭头的更改还将所有坐标设置为 0,因此它显示在图形的边缘,因此仅部分可见。

作为解决方法,我什至尝试绑定注释的笔画粗细,如果箭头应该被隐藏,则将其设置为 0。

StrokeThickness="{Binding ArrowStrokeThickness}"

这也没有任何效果。但是,它用于验证绑定是否正确并且读取了值,因为按预期命中了 ArrowStrokeThickness getter 中的断点。 (我添加此 属性 只是为了解决此问题,因此无法从其他任何地方访问它)。

我意识到我可以通过将箭头放在可见范围之外来解决这个问题,但它不应该是可见的,但这是一个丑陋的解决方案,需要我破解我的视图模型。

我想补充一点,虽然我仍在使用 SciChart 3.31 版,但我已将解决方案短暂更新到 4.0.5 版(我已经回滚了此更改)并且箭头注释是行为相同。

编辑:出于知识 属性 原因删除了图片。

所以我发现 LineArrowAnnotation 继承了 UIElement 的 Visibility 属性。它似乎不应该真正支持它。要么,要么实施不正确。无论如何,我查看了哪些属性实际上属于 LineArrowAnnotation class,并且我设法通过绑定 HeadLength 属性 并在应该隐藏箭头时将其设置为 0 来隐藏箭头。

此问题已在 SciChart 论坛上被问过多次 here, here, here and here

可接受的解决方案是绑定到 Annotation.IsHidden(布尔 DependencyProperty)以显示或隐藏注释。