2010-06-04 3 views
0

Здесь я пытаюсь назначить источник данных (используя тот же код, указанный в примере приложения), и создать график, только разница заключается в том, что я делаю это в WPF WindowsFormsHost. по какой-то причине источник данных не назначается должным образом, и я не могу видеть, что серия («Серия 1») создается. что он работает в приложении Windows Forms, но не в WPF.MS Chart в WPF, установка DataSource не создает серию

Я что-то пропустил и может кто-нибудь мне помочь?

Благодаря

<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); 
} 

Шаик

+0

Я не использовал MS Chart в годы, так что надеюсь, эксперт Chart MS придет к вам на помощь. Вы пробовали DataVisualizationToolkit в бесплатном WPFToolkit на CodePlex? Это в некотором смысле гораздо более продвинутое, чем MS Chart, и, конечно же, оно лучше подходит для WPF. –

+0

Спасибо за ваш ответ, я попробовал, но производительность не так хороша, и она блокируется случайным образом, более того, она не доказана. Причина, по которой я хотел попробовать MSChart, - это то, что MS купила его у Duddas. Любые способы amCharts выглядят многообещающими, и это тоже слишком дешево – Shaik

ответ

0

С помощью следующих двух изменений, вы можете исправить код:

1 - Вместо

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

написать

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

2 - Перед тем выше код, вставьте следующие строки:

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

Спасибо за ответ, сначала я ошибся при вставке кода, он скопировал «[» как двойные кавычки. В любом случае ручное добавление областей диаграммы и рядов будет работать, это было для меня раньше, но установка источника данных должна автоматически создавать область диаграммы и серию, а это не так. – Shaik