Я хочу показать большую коллекцию точек в виде диаграммы (не менее 300 000 точек), используя диаграмму инструментария wpf.Waiting Dialog white wpf toolkit chart загрузить график
У меня есть следующий код 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 в диаграмму - это операция пользовательского интерфейса и должна выполняться в потоке пользовательского интерфейса. Но как я могу заставить приложение реагировать, так как у меня нет никакого контроля над тем, как отображаются точки - это логика диаграммы?
Итак, любые идеи? У вас были подобные проблемы? Спасибо, Nadia