如何修复 VerticalLineAnnotation 始终将绑定设置为零

How to fix VerticalLineAnnotation always setting binding to zero

我正在尝试设置一个类似于 SciChart 示例套件中拖动水平阈值示例的 SciChart VerticalLineAnnotation。我在我的视图模型中将注释绑定到 属性,但是当拖动注释时,它会不断将 属性 设置为值 0.

我试过在代码中设置 属性 值,它确实像您期望的那样移动了行,表明绑定没问题。我在 属性 上设置了一个断点并确认 0 值来自控件,而不是我的代码。

<sc:SciChartSurface x:Name="OverviewSurface"
                    Margin="5,2,5,2"
                    Background="White"
                    Grid.Row="2"
                    Grid.ColumnSpan="4"
                    Loaded="OnOverviewSurfaceLoaded"
                    RenderableSeries="{Binding ElementName=ChartSurface, Path=RenderableSeries}"
                    YAxes="{sc:AxesBinding YAxes}">
    <sc:SciChartSurface.XAxis>
        <sc:NumericAxis VisibleRange="{Binding VisibleRange}" DrawMajorGridLines="False" DrawMinorGridLines="False" DrawMajorBands="False" Visibility="Collapsed"/>
    </sc:SciChartSurface.XAxis>
    <sc:SciChartSurface.Annotations>
        <sc:VerticalLineAnnotation VerticalAlignment="Stretch"
                                    IsEditable="True"
                                    ShowLabel="False"
                                    Stroke="#FF42b649"
                                    StrokeThickness="4"
                                    YAxisId="ChannelA"
                                    X1="{Binding SelectedIndex, Mode=TwoWay}" />
    </sc:SciChartSurface.Annotations>
</sc:SciChartSurface>

我希望当我沿着图表的水平长度拖动注释时,我会得到一个与放置在 SelectedIndex 中的 X 位置相对应的值,但我得到的只是零。

这个问题的原因竟然是SelectedIndex的数据类型,它是一个无符号整数。尽管 VerticalLineAnnotation 的 X/Y 值类型是 IComparable,但如果您使用 IsEditable="True" 函数,则拖动步长是小数,如果绑定到整数类型,它将不断舍入到 0 使得它无法移动。

如果有办法在 SciChart 中更改拖动的步长,我找不到它。相反,我将 SelectedIndex 更改为 double 并将其四舍五入为 setter 中我想要的无符号整数,这解决了我的问题。