Entwickler-Ecke
WPF / Silverlight - OxyPlot
mat2C# - Mi 29.01.14 18:19
Titel: OxyPlot
Liebe Entwickler,
Ich versuchte mich an OxyPlot, leider scheitert es schon am Einführungsbeispiel:
www.oxyplot.org/doc/HelloWpf.html
Ich habe folgende Teile:
MainWindowModel.xaml.cs
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| using System; using OxyPlot; using OxyPlot.Series; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;
namespace WpfApplication1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } public class MainViewModel { public MainViewModel() { this.MyModel = new PlotModel("Example 1"); this.MyModel.Series.Add(new FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)")); }
public PlotModel MyModel { get; private set; } } } |
MainWindowModel.xaml
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| <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.codeplex.com" xmlns:local="clr-namespace:WpfApplication1" Title="Example 1 (WPF)" Height="350" Width="525"> <Window.DataContext> <local:MainViewModel/> </Window.DataContext> <Grid> <oxy:Plot Model="{Binding MyModel}"/> </Grid> </Window> |
Dabei kommt die Fehlermeldung:
Der Name "MainViewModel" ist im Namespace "clr-namespace:WpfApplication1" nicht vorhanden. [...]\visual studio 2013\Projects\WpfApplication1\WpfApplication1\MainWindow.xaml
Ich verstehe nicht warum die Klasse nicht gefunden wird...
Sobald ich die verursachenden Zeilen entferne:
XML-Daten
1: 2: 3:
| <Window.DataContext> <local:MainViewModel/> </Window.DataContext> |
kommt der Fehler:
Die Datei oder Assembly "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" oder eine Abhängigkeit davon wurde nicht gefunden. The system cannot find the file specified. [...]\visual studio 2013\Projects\WpfApplication1\WpfApplication1\MainWindow.xaml
Ich befürchte es ist ein peinlicher Anfängerfehler aber das passt zum momentanen Bildungsstand.
Die Dokumentation zu OxyPlot ist leider noch dünn, darum fand ich dort nichts.
Ich nutze:
VS Express 2013
OxyPlot Version 2014.1.227.1
Win7
.NET 4.5
Mein Hintergrund:
Ich bin dabei mich in die C#-Welt vorzutasten.
Ich komme aus der Matlab-Ecke und möchte mich in einer "richtigen" Programmiersprache vertiefen.
Mittels C++-Kurs (schon eine Weile her) und Channel9 habe ich mir C#-Grundkenntnisse angeeignet und möchte nun diese anhand eines kleien Projektes umsetzen.
Zur Untersuchung von Messdaten möchte ich eine kleine Anwendung schreiben die Kurven visualisieren kann. Diese können relativ gross sein, darum OxyPlot.
Jede Hilfe ist willkommen!
Gruss,
mat2C#
Moderiert von
Christian S.: Color- durch Syntax-Tags ersetzt
Th69 - Mi 29.01.14 18:56
Hallo und :welcome:
du scheinst jetzt die Dateien selber erzeugt zu haben. Läuft denn der Originalcode unter
Zitat: |
The source code can be found in Documentation\Examples\WpfApplication1 |
?
Ansonsten erzeuge mal getrennt die Dateien (anstatt beides in einer C#-Datei):
MainWindow.xaml.cs
MainWindow.xaml
MainWindowModel.cs
mat2C# - Do 30.01.14 14:03
Hallo
Danke für den freundlichen Empfang und die (sehr) schnelle Hilfe :-)
Ich habe getan was Du vorgeschlagen hast, MainViewModel.cs als eigene Datei:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| namespace WpfApplication1 { using System;
using OxyPlot; using OxyPlot.Series;
public class MainViewModel { public MainViewModel() { this.MyModel = new PlotModel("Example 1"); this.MyModel.Series.Add(new FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)")); }
public PlotModel MyModel { get; private set; } } } |
Und siehe da, es hat geklappt :-)
Der Fehler ist verschwunden und es öffnet sich sogar ein Fenster mit der Sinuskurve.
Aber, wie immer bei Antworten, es entstehen natürlich neue Fragen:
Warum half das? Wieso wird es ausserhalb des *.xaml.cs plötzlich vom Compiler erkannt?
Gruss
Th69 - Do 30.01.14 14:58
Schön, daß es jetzt läuft.
Aber zu der Fehlermeldung kann ich nur sagen: WPF - ein Mysterium...
Das war aber einfach nur geraten, da man nach dem MVVM-Modell einfach View-, ViewModel- und Model-Klassen voneinander trennt (d.h. mindestens in eigene Dateien, üblicherweise sogar die Models in einer eigenen Assembly (DLL)).
mat2C# - Fr 31.01.14 08:23
Ok, dann werde ich mich mal in dieser Richtung etwas schlau machen.
Naja, rund läuft's noch nicht ganz: Im XAML editor wird die alte Fehlermeldung noch immer angezeigt:
Die Datei oder Assembly "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" oder eine Abhängigkeit davon wurde nicht gefunden. The system cannot find the file specified. [...]\visual studio 2013\Projects\WpfApplication1\WpfApplication1\MainWindow.xaml
aber das muss ich zuerst einmal selber überprüfen. Aber wenn WPF wirklich so eine Hexenlandschaft ist, dann blüht mir dort noch was... ;-)
Besten Dank und schönen Gruss
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!