0

我的图表中有一些注释,确切地说是 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 版(我已经回滚了此更改)并且箭头注释的行为相同。

编辑:出于知识产权原因删除的图片。

4

2 回答 2

0

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

于 2016-04-23T18:23:51.073 回答
0

这个问题在 SciChart 论坛上已经被问过很多次了,这里这里这里这里

公认的解决方案是绑定到Annotation.IsHidden(boolean DependencyProperty) 以显示或隐藏注释。

于 2016-04-24T14:08:53.413 回答