1、前台代码:
<Window x:Class="JHSingleDiseaseReport.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="880.6" Width="995.899">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Grid.Row="1"
SelectionUnit="Cell" SelectionMode="Extended" Background="AntiqueWhite"
IsReadOnly="True" Margin="0,0,0.333,529.333"/>
<lvc:CartesianChart Series="{Binding SeriesCollect}" Margin="-25,327,24.333,154.333" Grid.Row="1"/>
</Grid>
</Window>
2、后台代码:
private void BindData(DataTable dtData)
{
//System.Windows.Controls.DataGrid dataGrid = new System.Windows.Controls.DataGrid();
dataGrid.AutoGenerateColumns = false;
foreach (DataColumn col in dtData.Columns)
{
DataGridTextColumn column1 = new DataGridTextColumn();
column1.Header = col.ColumnName;
column1.Binding = new Binding(col.ColumnName);
dataGrid.Columns.Add(column1);
}
dataGrid.ItemsSource = dtData.DefaultView;
}
//连续折线图的方法
public void linestart()
{
Task.Run(() =>
{
var r = new Random();
while (true)
{
Thread.Sleep(1000);
_trend = r.Next(-10, 10);
//通过Dispatcher在工作线程中更新窗体的UI元素
Application.Current.Dispatcher.Invoke(() =>
{
//更新横坐标时间
Labels.Add(DateTime.Now.ToString());
Labels.RemoveAt(0);
//更新纵坐标数据
SeriesCollection[0].Values.Add(_trend);
SeriesCollection[0].Values.RemoveAt(0);
});
}
});
}
3、调用
//实例化一条折线图
LineSeries mylineseries = new LineSeries();
//设置折线的标题
mylineseries.Title = "Temp";
//折线图直线形式
mylineseries.LineSmoothness = 0;
//折线图的无点样式
mylineseries.PointGeometry = null;
//添加横坐标
Labels = new List<string> { "2019-04", "2019-05", "2019-06" };
//添加折线图的数据
mylineseries.Values = new ChartValues<double>(temp);
SeriesCollection = new SeriesCollection { };
SeriesCollection.Add(mylineseries);
_trend = 8;
linestart();
DataContext = this;