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

时间:2019-07-17 20:35:36

标签: c# wpf scichart

我试图设置类似于SciChart示例套件中的Drag Horizo​​ntal Threshold示例的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>

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

1 个答案:

答案 0 :(得分:0)

此问题的原因原来是SelectedIndex的数据类型,它是一个无符号整数。尽管VerticalLineAnnotation的X / Y值类型为IComparable,但如果使用IsEditable =“ True”函数,则拖动步长是小数,并且如果绑定到整数类型,它将连续舍入为0,使其无法移动

如果可以在SciChart中更改拖动的步长,则无法找到它。相反,我将SelectedIndex更改为double并将其四舍五入为所需的无符号整数,这解决了我的问题。