2010-06-04 16 views
0

Ici j'essaie d'assigner la source de données (en utilisant le même code donné dans l'exemple d'application) et créer un graphique, seule différence est que je le fais dans WindowsFormsHost WPF. Pour une raison quelconque, la source de données n'est pas correctement affectée et je ne suis pas en mesure de voir la série ("Série 1") en cours de création. chose câblée est qu'il fonctionne dans l'application Windows Forms mais pas dans le WPF.MS Chart dans WPF, Réglage de la source de données ne crée pas la série

ai-je oublié quelque chose et quelqu'un peut-il m'aider?

Merci

<Window x:Class="SEDC.MDM.WinUI.WindowsFormsHostWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
    xmlns:CHR="clr- namespace:System.Windows.Forms.DataVisualization.Charting;assembly=System.Windows.Forms.Dat aVisualization" 
    Title="HostingWfInWpf" Height="230" Width="338"> 
    <Grid x:Name="grid1"> 
    </Grid> 
    </Window> 


private void drawChartDataBinding() 
{ 
System.Windows.Forms.Integration.WindowsFormsHost host = 
new System.Windows.Forms.Integration.WindowsFormsHost(); 
string fileNameString = @"C:\Users\Shaik\MSChart\WinSamples\WinSamples\data\chartdata.mdb"; 

// initialize a connection string 
string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString; 

// define the database query 
string mySelectQuery = "SELECT * FROM REPS;"; 

// create a database connection object using the connection string 
OleDbConnection myConnection = new OleDbConnection(myConnectionString); 

// create a database command on the connection using query 
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection); 
Chart Chart1 = new Chart(); 
// set chart data source 
Chart1.DataSource = myCommand; 

// set series members names for the X and Y values 
Chart1.Series"Series 1".XValueMember = "Name"; 
Chart1.Series"Series 1".YValueMembers = "Sales"; 

// data bind to the selected data source 
Chart1.DataBind(); 

myCommand.Dispose(); 
myConnection.Close(); 
host.Child = Chart1; 
this.grid1.Children.Add(host); 
} 

Shaik

+0

Je ne l'ai pas utilisé MS Chart depuis des années, alors je espère un expert MS Chart va venir à votre aide. Avez-vous essayé le DataVisualizationToolkit dans le WPFToolkit gratuit sur CodePlex? Il est à certains égards beaucoup plus avancé que MS Chart, et il s'intègre certainement mieux avec WPF. –

+0

Merci pour votre réponse, je l'ai essayé, mais la performance n'est pas très bonne et il se bloque aléatoirement, de plus il n'est pas prouvé. La raison pour laquelle je voulais essayer MSChart est que MS l'a acheté à Duddas. Toutes les façons amCharts semble prometteur et il est bon aussi – Shaik

Répondre

0

Avec les deux changements, vous pouvez corriger votre code ci-dessous:

1 - Au lieu de

Chart1.Series"Series 1".XValueMember = "Name"; 
Chart1.Series"Series 1".YValueMembers = "Sales"; 

écrire

Chart1.Series["Series 1"].XValueMember = "Name"; 
Chart1.Series["Series 1"].YValueMembers = "Sales"; 

2 - Avant le code ci-dessus, insérez les lignes suivantes:

Chart1.ChartAreas.Add("Default"); 
Chart1.Series.Add(new Series("Series 1")); 
+0

Merci pour la réponse, d'abord j'ai fait une erreur en collant le code, il a copié le "[" comme guillemets doubles. Toute façon d'ajouter manuellement les zones de graphique et la série fonctionnerait, il était wokring pour moi plus tôt, mais la définition de la source de données devrait créer la zone de graphique et la série automatiquement, ce qui n'est pas le cas. – Shaik