我在使用 OxyPlot 时遇到了一些问题,但无法通过他们的文档或其他搜索来解决。我正在开发一个 wpf 应用程序,它允许用户通过按钮单击事件打开 .csv,然后执行一些数学运算并报告一些有用的信息。我想绘制一些生成的数据,因此使用 OxyPlot。由于某种原因,当生成该图的代码位于按钮单击事件内时,我无法填充该图。这里用一个较小的例子来说明:
此代码有效(xaml):
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="http://oxyplot.org/wpf"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="20,20,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
<Grid HorizontalAlignment="Left" Height="255" Margin="20,47,0,0" VerticalAlignment="Top" Width="477">
<oxy:PlotView Model="{Binding ScatterModel}"/>
</Grid>
</Grid>
有了这个:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
var tmp = new PlotModel { Title = "Scatter plot", Subtitle = "y = x" };
var s2 = new LineSeries
{
StrokeThickness = 1,
MarkerSize = 1,
MarkerStroke = OxyColors.ForestGreen,
MarkerType = MarkerType.Plus
};
for (int i = 0; i < 100; i++)
{
s2.Points.Add(new DataPoint(i, i));
}
tmp.Series.Add(s2);
this.ScatterModel = tmp;
}
private void button_Click(object sender, RoutedEventArgs e)
{
}
public PlotModel ScatterModel { get; set; }
并产生这个:绘图工作 https://i.stack.imgur.com/dBX8t.png
但是,在不更改 xaml 的情况下,如果我复制/粘贴按钮单击事件下方的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
DataContext = this;
var tmp = new PlotModel { Title = "Scatter plot", Subtitle = "y = x" };
var s2 = new LineSeries
{
StrokeThickness = 1,
MarkerSize = 1,
MarkerStroke = OxyColors.ForestGreen,
MarkerType = MarkerType.Plus
};
for (int i = 0; i < 100; i++)
{
s2.Points.Add(new DataPoint(i, i));
}
tmp.Series.Add(s2);
this.ScatterModel = tmp;
}
public PlotModel ScatterModel { get; set; }
该情节永远不会生成:不工作 https://i.stack.imgur.com/EK8HE.png:
我尝试过移动 DataContext = this;使用InitializeComponent() 备份到public MainWindow(),反之亦然;不用找了。我也尝试过定义
<Window.DataContext>
<local:MainWindow/>
</Window.DataContext>
在 xaml 中,但在构建过程中会引发异常/无限循环错误。
一些简单的事情我担心我不了解 OxyPlot 的实现?
谢谢!
CSMD科塔