步骤1:安装 ScottPlot.WPF NuGet 包
步骤2:将此添加到 XAML 文件的根元素中:
xmlns:ScottPlot="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF"
步骤3:将 a 添加到布局中并为其指定唯一名称WpfPlot
<ScottPlot:WpfPlot x:Name="WpfPlot1" />
步骤4:在启动序列中绘制一些数据
double[] dataX = { 1, 2, 3, 4, 5 };
double[] dataY = { 1, 4, 9, 16, 25 };
WpfPlot1.Plot.Add.Scatter(dataX, dataY);
WpfPlot1.Refresh();
.NET Framework 应用程序
面向 .NET Framework 的项目应在事件内设置其绘图,而不是直接在构造函数中设置。Loaded
public MainWindow()
{
InitializeComponent();
Loaded += (s, e) =>
{
double[] dataX = { 1, 2, 3, 4, 5 };
double[] dataY = { 1, 4, 9, 16, 25 };
WpfPlot1.Plot.Add.Scatter(dataX, dataY);
WpfPlot1.Refresh();
};
}
使用 MVVM 绘图
WPF 应用程序可以使用 MVVM (Model-view-viewmodel) 模式创建,以改善 GUI 层和业务逻辑之间的分离。
-
访问对象的所有代码都可以保存在视图模型中 - 该类设置为
WpfPlot
DataContext
-
使具体实现适应框架(例如,使用属性来定义
PlotControl
)
MVVM 示例
视图:在布局中添加 a 而不是ContentControl
WpfPlot
<ContentControl Content="{Binding PlotControl, Mode=OneTime}"/>
视图模型:添加属性PlotControl
WpfPlot PlotControl { get; } = new WpfPlot();
代码隐藏:在视图模型的构造函数中设置绘图
void Plot()
{
double[] dataX = { 1, 2, 3, 4, 5 };
double[] dataY = { 1, 4, 9, 16, 25 };
PlotControl.Plot.Add.Scatter(dataX, dataY);
PlotControl.Refresh();
}
更新绘图:
-
使用视图模型中的属性访问控件
PlotControl
-
绘图更新很可能是对事件的反应或对其他属性的修改。
-
何时更新绘图取决于您的用例。请注意,频繁呈现大量数据可能会对性能产生负面影响。