2010-03-04 7 views
6

Tôi đã thử nhúng biểu đồ .NET WinForms (Hiển thị đồ thị Stephan Zimmermann) trong cửa sổ WPF, dưới WindowsFormsHost (tôi đã tham chiếu cả System.Windows.Forms và WindowsFormsIntegration).Nhúng WinForms Graph vào WPF Window

Tuy nhiên, tôi có thể thấy bảng biểu mẫu chứ không phải biểu đồ. Tôi đã chạy các ứng dụng demo trên một hình thức cửa sổ và nó đã làm việc, nhưng khi tôi chuyển cùng một mã vào cửa sổ WPF, tôi thấy rằng các dữ liệu được cập nhật nhưng không được hiển thị trên đồ thị.

Cảm ơn mọi người trước,

Yaron.

+0

Bạn có thể đăng mã WPF của mình không? – micahtan

Trả lời

0

Đặt biểu đồ làm con của đối tượng WindowsFormsHost.

+0

Đã thực hiện nó, nó không giúp được gì. Tôi vẫn không thể nhìn thấy các cập nhật đồ thị. –

14

Bạn có thể thử mã sau đây và xem liệu bạn có thể hiển thị biểu đồ và sau đó làm việc từ đó không?

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> 

đảm bảo rằng bạn có tham chiếu đến:

% ProgramFiles% \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Hồ sơ \ Client \ WindowsFormsIntegration.dll

% ProgramFiles% \ Tham chiếu Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Hồ sơ \ Client \ System.Windows.Forms.DataVisualization.dll

% ProgramFiles% \ Tham chiếu Tập hợp \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ khách hàng \ System.Windows.Forms.dll

tôi có này chạy sau không biết xấu hổ sao chép sau link

1

Mặc dù câu hỏi là hơn 6 tuổi, tôi đã có một tương tự (nếu không phải là vấn đề giống nhau), khi cố gắng để tạo và thêm đối tượng Chart vào thời gian chạy. Nhờ gợi ý Bobwah của tôi có thể cô lập các vấn đề và thấy rằng tôi chỉ đơn giản là có thêm một ChartArea đến đối tượng Chart để xem đồ thị:

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 

Hy vọng nó sẽ giúp người ...;)

0

tôi có cùng một vấn đề trong WPF. May mắn là tôi đã nhận được giải pháp.

Tôi quan sát thấy các khu vực và chuỗi biểu đồ đang được đặt lại sau khi nguồn dữ liệu được đặt. Nó trông giống như một lỗi cho tôi.

Vì vậy, giải pháp/giải pháp là đặt nguồn dữ liệu ở vị trí đầu tiên trước khi thêm những thứ như khu vực biểu đồ và chuỗi.