如何修复 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 中我想要的无符号整数,这解决了我的问题。
我正在尝试设置一个类似于 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 中我想要的无符号整数,这解决了我的问题。