2010-03-04 10 views
6

He intentado incrustar un gráfico .NET WinForms (Gráfico de Stephan Zimmermann) en una ventana de WPF, bajo WindowsFormsHost (he hecho referencia tanto a System.Windows.Forms como a WindowsFormsIntegration).Incrustar gráfico de WinForms en la ventana WPF

Sin embargo, puedo ver el panel de formulario pero no el gráfico. He ejecutado la aplicación de demostración en un formulario de Windows y funcionó, pero cuando transferí el mismo código a la ventana de WPF, vi que los datos se actualizan pero no se muestran en el gráfico.

gracias a todos de antemano,

Yaron.

+0

¿Podría publicar su código WPF? – micahtan

Respuesta

0

Establezca el gráfico como elemento secundario del objeto WindowsFormsHost.

+0

Ya lo hizo, no ayudó. Todavía no puedo ver las actualizaciones de gráficos. –

14

¿Podría probar el siguiente código y ver si puede obtener un gráfico para mostrar y luego trabajar desde allí?

MainWindow.xaml.cs

using System.Collections.Generic; 
using System.Windows.Forms.DataVisualization.Charting; 
using System.Windows; 

namespace WpfApplication1 
{ 
    public partial class MainWindow : Window 
    { 
     Dictionary<int, double> value; 
     public MainWindow() 
     { 
      InitializeComponent(); 

      value = new Dictionary<int, double>(); 
      for (int i = 0; i < 10; i++) 
       value.Add(i, 10 * i); 

      Chart chart = this.FindName("MyWinformChart") as Chart; 
      chart.DataSource = value; 
      chart.Series["series"].XValueMember = "Key"; 
      chart.Series["series"].YValueMembers = "Value"; 
     } 
    } 
} 

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:winformchart="clr-namespace:System.Windows.Forms.DataVisualization.Charting;assembly=System.Windows.Forms.DataVisualization" 
    Title="MainWindow" Height="392" Width="525"> 
    <StackPanel> 

     <WindowsFormsHost x:Name="host" Height="300"> 
      <winformchart:Chart x:Name="MyWinformChart" Dock="Fill"> 
       <winformchart:Chart.Series> 
        <winformchart:Series Name="series" ChartType="Line"/> 
       </winformchart:Chart.Series> 
       <winformchart:Chart.ChartAreas> 
        <winformchart:ChartArea/> 
       </winformchart:Chart.ChartAreas> 
      </winformchart:Chart> 
     </WindowsFormsHost> 

    </StackPanel> 
</Window> 

asegurarse de que tiene referencias a:

% Archivos de programa% \ Referencia Asambleas \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ WindowsFormsIntegration.dll

% ProgramFiles% \ Conjuntos de referencia \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.Windows.Forms.DataVisualization.dll

% ProgramFiles% \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.Windows.Forms.dll

tengo esta corriendo tras descaradamente copiar el siguiente link

1

Aunque la cuestión es más de 6 años de edad que tenía una similar (si no el mismo tema), al intentar para crear y agregar el objeto Chart en tiempo de ejecución. Gracias a la sugerencia de Bobwah pude aislar el problema y encontró que simplemente tenía que añadir un ChartArea al objeto gráfico para ver el gráfico:

Chart chart = new Chart(); 
chart.ChartAreas.Add("MainChartArea"); //this was missing 
chart.Series.Add(getSeries()); 
chart.Dock = System.Windows.Forms.DockStyle.Fill; 
host.Child = chart; //'host' is the WPF-WindowsFormsHost control 

espero que ayude a alguien ...;)

0

I tenía el mismo problema en WPF. Por suerte, tengo la solución.

Observé que las áreas de gráfico y las series se restablecen una vez que se establece la fuente de datos. Parece un error para mí.

Por lo tanto, la solución/solución es establecer la fuente de datos en primer lugar antes de agregar cosas como áreas de gráfico y series.

Cuestiones relacionadas