2016-05-18 1 views
3

Je suis aux prises avec plusieurs problèmes concernant OxyPlot dans un projet WPF.Liaison de données avec Oxyplot dans WPF

Tout d'abord, je peux utiliser la classe Plot ou la classe PlotView. Quelle est la différence entre ces deux classes?

Idéalement, je souhaite utiliser la liaison de données pour le modèle (ou au moins certaines de ses parties) et pour les données.

Si je PlotView, je peux utiliser une connexion pour le modèle, quelque chose comme ceci:

<oxy:PlotView Model="{Binding Model}"/> 

Si je Plot, je peux utiliser la liaison de données pour les données, quelque chose comme

<oxy:Plot> 
    <oxy:Plot.Series> 
    <oxy:LineSeries ItemsSource="{Binding Points}" /> 
    </oxy:Plot.Series> 
</oxy:Plot> 

Je peux obtenir ces deux méthodes, mais existe-t-il un moyen d'utiliser la liaison pour le modèle et les données?

Si j'utilise la classe Plot et reliure pour les données, je voudrais au moins utiliser pour la liaison LineColor, comme celui-ci

<oxy:Plot> 
    <oxy:Plot.Series> 
    <oxy:LineSeries ItemsSource="{Binding Points}" 
         DataFieldX="X" 
         DataFieldY="Y" 
         StrokeThickness="2" 
         MarkerSize="0" 
         LineStyle="Solid" 
         Color="{Binding LineColor}" 
         MarkerType="None"/> 
    </oxy:Plot.Series> 
</oxy:Plot> 

Je ne peux pas obtenir ce travail du tout. La courbe est toujours verte. Ma propriété LineColor est définie avec le type OxyColor. Est-ce le mauvais type?

Je sais que j'ai posé plusieurs questions dans le même article, mais je pense qu'ils sont très étroitement liés.

+0

Oublier le problème avec liant la propriété couleur. Cela fonctionne si vous utilisez OxyColorConverter, comme dans l'un des exemples d'applications. –

Répondre

2

Tout d'abord, je peux utiliser la classe Plot ou la classe PlotView. Quelle est la différence entre ces deux classes?

Je pense que vous voyez la différence dans vos exemples, si vous voulez vous lier au modèle, vous devez utiliser oxy: PlotView. Si vous voulez vous lier à une série, alors vous devrez utiliser oxy: Plot control.

Je peux obtenir ces deux méthodes, mais existe-t-il un moyen d'utiliser la liaison pour le modèle et les données?

Non, comme il est dit dans la dernière phrase, vous ne pouvez pas lier les deux en même temps, mais vous pouvez ajouter LineSeries à votre modèle comme celui-ci (dans votre exemple):

PlotModel model = new PlotModel(); 
List<DataPoint> Points = new List<DataPoint>(); 

LineSeries lineserie = new LineSeries 
{ 
    ItemsSource = Points, 
    DataFieldX = "x", 
    DataFieldY = "Y", 
    StrokeThickness = 2, 
    MarkerSize = 0, 
    LineStyle = LineStyle.Solid, 
    Color = OxyColors.White, 
    MarkerType = MarkerType.None, 
}; 

model.Series.Add(lineserie); 

Ensuite vous liez à le modèle, en utilisant oxy:PlotView, et c'est tout. Si vous voulez modifier les paramètres qui traitent du comportement de la courbe, vous devez lier la propriété PlotController à (juste au cas où, pour un travail futur).

EDIT:

Oystein Bjorke (créateur OxyPlot) dit, répondant à deux questions:

Le composant PlotView est maintenant similaire sur toutes les plates-formes, il contient seulement Model et Controller propriétés. Le contrôle Plot vous permet de définir définir des axes, des séries, des annotations, etc. et cela doit uniquement être disponible dans les plates-formes XAML.

lien: http://discussion.oxyplot.org/topics/240-cant-define-axes-in-xaml/