2014-08-30 50 views
3

我想使用winforms的图表,有许多图表控件,但我不能在wpf视图中使用此控件。我有这个axml代码:如何将一个Winform图表控件托管到WPF视图中?

<Window x:Class="WPFCharts.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:charts="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
     Title="MainWindow" Height="440.789" Width="863.158" Loaded="Window_Loaded"> 
    <Grid Name="grdgraficos"> 



     <TabControl VerticalAlignment="Stretch" Margin="0,0,0,0" HorizontalAlignment="Stretch"> 
      <TabItem Header="WPF Controls"> 
       <Grid Background="#FFE5E5E5"> 
        <charts:Chart Name="pieChart" Title="Pie Series Demo" Margin="0,0,0,0"> 
         <charts:PieSeries DependentValuePath="y" 
       IndependentValuePath="campo" ItemsSource="{Binding}" 
       IsSelectionEnabled="True" /> 
        </charts:Chart> 
       </Grid> 
      </TabItem> 
      <TabItem Header="WinForms Controls"> 
       <Grid Background="#FFE5E5E5"> 
        <WindowsFormsHost Name="wfhGraficoWinForm" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Bottom" /> 
       </Grid> 
      </TabItem> 
     </TabControl> 

    </Grid> 
</Window> 

而且我有这个代码隐藏。通过目前它第一个解决方案,在未来我将使用MVVM模式:

private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      System.Windows.Forms.DataVisualization.Charting.Chart miGraficoWF = new System.Windows.Forms.DataVisualization.Charting.Chart(); 
      System.Windows.Forms.DataVisualization.Charting.Series miSerieWF = new System.Windows.Forms.DataVisualization.Charting.Series(); 
      miSerieWF.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Bar; 
      miGraficoWF.Series.Clear(); 
      miGraficoWF.Series.Add(miSerieWF); 
      miSerieWF.Points.AddY(2); 
      miSerieWF.Points.AddY(5); 
      miSerieWF.Points.AddY(1); 

      wfhGraficoWinForm.Child = miGraficoWF; 
     } 

然而,控制不显示。

如果我创建一个winform对象,并使用相同的代码显示图表,那么我认为创建图表的代码是正确的,问题是我不知道如何显示winform控件wpf视图。

谢谢。

+1

是试图以显示与WPF兼容图表?您是否使用简单的Chart来尝试一个简单的空解决方案?你是否锁定使用Winform图表,或者你可以选择使用什么? – Noctis 2014-08-30 08:13:35

+0

真的我不知道图表是否兼容,但如果我没有错,winformhost的原因是在视图中显示winForm控件。 – 2014-08-30 08:31:07

+1

所以,两个选项卡,你希望他们显示相同的图形,但在你后面的代码中只设置在winforms上...看看** pragmateek **答案。 – Noctis 2014-08-30 10:35:25

回答

3

问题不在于WPF/WinForms互操作层,而是在WinForms中。

您必须添加一个ChartArea

miGraficoWF.ChartAreas.Add("Default"); 
相关问题