我已经学习C#和WPF大约5到6周了,我正在做一个项目的实习生。这并不是坏事,但是现在我被卡住了,我不知道为什么。尝试将WinForms应用程序迁移到WPF。旧的应用程序使用Z- graphs,为OxyPlot编写了代码,但我的图形没有显示,我不知道为什么。
XAML
<Border BorderBrush="{StaticResource chromeBrush}" BorderThickness="5 5 5 5" Margin="2 3 0 2" Grid.Column="3" Grid.ColumnSpan="36" Grid.Row="3" Grid.RowSpan="33" Background="Black"> <DockPanel> <DockPanel.DataContext> <local:Main/> </DockPanel.DataContext> <oxy:Plot Model="{Binding openPlot}" /> </DockPanel> </Border>
和C#
public partial class Main : Window
{
public Dictionary<string, DoorData> doorList;
public Main()
{
//this.InitializeComponent();
doorList = new Dictionary<string, DoorData>();
}
public DoorData doorGraphs = new DoorData();
private void unitList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string selectedUnit = unitList.SelectedItem.ToString();
doorGraphs = doorList[selectedUnit];
this.Title = selectedUnit + " Open";
PlotModel openPlot = new PlotModel();
List<SmartDDUOperation> values = doorGraphs.Data;
doorGraphs.FilterToType(SmartOperationType.Open);
IEnumerable<SmartDDUOperation> drawOrder = values.OrderByDescending(x => x.TimeStamp);
List<LineSeries> linePointsArray = new List<LineSeries>();
foreach (SmartDDUOperation doorOp in drawOrder)
{
List<Tuple<double, double>> points = new List<Tuple<double, double>>();
points = doorOp.GetTimePoints2();
LineSeries linePoints = new LineSeries();
foreach (Tuple<double, double> p in points)
{
DataPoint XYPoint = new DataPoint(p.Item1, p.Item2);
linePoints.Points.Add(XYPoint);
}
linePointsArray.Add(linePoints);
}
LinearAxis Xaxis = new LinearAxis();
Xaxis.Maximum = 6;
Xaxis.Minimum = 0;
Xaxis.Position = AxisPosition.Bottom;
Xaxis.Title = "Time (s)";
openPlot.Axes.Add(Xaxis);
LinearAxis Yaxis = new LinearAxis();
Yaxis.Maximum = 12;
Yaxis.Minimum = 1;
Yaxis.Position = AxisPosition.Left;
Yaxis.Title = "Door Position";
openPlot.Axes.Add(Yaxis);
// Adds each series to the graph
foreach (var series in linePointsArray)
{
openPlot.Series.Add(series);
}
}
使用以下名称空间...
enter using OxyPlot; using OxyPlot.Annotations; using OxyPlot.Series; using OxyPlot.Axes;
就像我说的,只是一个初学者,所以里面可能有一些明显的错误。请随时指出它们并教育我。
谢谢
发布于 2015-02-20 22:27:15
您正在方法中声明您的PlotModel ...当您离开函数时,它将超出范围。所以你没有绑定到任何东西。您的PlotModel需要是可公开访问的,并在ViewModel/Main中声明。
发布于 2014-10-01 04:25:19
我自己也是OxyPlot的新手。据我所知,您可能需要包含一个使用
using OxyPlot.WPF;
声明。
也可以调用
openPlot InvalidatePlot(true);
可能需要用来触发重绘。
您可能需要添加一个
openPlot.Series.Clear();
在添加系列之前,如果有任何方法可以再次添加这些系列。
https://stackoverflow.com/questions/25836123
复制相似问题