我想使用 wpf 工具包图表将大量点显示为图表(至少 300 000 个点)。
我有以下 XAML
<chartingToolkit:Chart Name="chartHistory">
<chartingToolkit:Chart.Axes>
<chartingToolkit:LinearAxis x:Name="horizontalAxis" Orientation="X" Title="Time [s]" ShowGridLines="True"/>
<chartingToolkit:LinearAxis x:Name="verticalAxis" Orientation="Y" Title="Value [mm]" ShowGridLines="True"/>
</chartingToolkit:Chart.Axes>
<chartingToolkit:AreaSeries x:Name="chartSeries" DataPointStyle="{StaticResource chartDataPoint}"
IndependentValuePath="TimeInSeconds"
DependentValuePath="Value">
</chartingToolkit:AreaSeries>
</chartingToolkit:Chart>
在后面的代码中:
public class PointData
{
public double TimeInSeconds { get; set; }
public double Value { get; set; }
}
private List<PointData> points;
private void Screen_Loaded(object sender, RoutedEventArgs e)
{
// this is a large collection of points (minimum 300 000)
points = LoadPointsFromFile();
// and it takes a lot of time to read from the file and load in the UI
chartSeries.ItemsSource = points;
// additional chart display properties (setting min/max on the axes etc.)
}
所以,我有 2 个耗时的操作阻塞了我的 UI。我想要的是在耗时操作发生时显示“请加载对话框”,以便用户知道应用程序仍在执行某些操作。
耗时的操作是:
- 从文件中读取点(这个操作可以在单独的线程上完成,但是由于下一个操作(加载图表中的点)取决于它并且是UI操作,所以我没有把它放在单独的线程中)
- 在图表中将点加载为 ItemsSource - 这是一个 UI 操作,应该在 UI 线程上完成。但是,由于我无法控制点的显示方式,我怎样才能使应用程序仍然响应 - 这是图表自己的逻辑?
那么,有什么想法吗?你有过类似的问题吗?谢谢你,纳迪亚