彩票走势图

在WPF中使用WinForm控件方法

转帖|其它|编辑:郝浩|2011-05-13 14:44:52.000|阅读 1202 次

概述:下面以在Wpf中添加ZedGraph(用于创建任意数据的二维线型、条型、饼型图表的一个开源类库)控件,说明在WPF中使用Winform控件的方法。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  下面以在Wpf中添加ZedGraph(用于创建任意数据的二维线型、条型、饼型图表的一个开源类库)控件,说明在WPF中使用Winform控件的方法。

  1、 首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll。

  2、 由于要用到ZedGraph控件,所以也要添加对ZedGraph.dll的引用。

  3、 在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容(选中部分):

  即:

 xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

xmlns:wf ="clr-namespace:System.Windows.Forms;

assembly=System.Windows.Forms"

xmlns:zedgraph="clr-namespace:ZedGraph;assembly=ZedGraph"
 

  4、 在WPF的容器控件内如Grid内首先要添加WinForm控件的宿主容器,用于衔接WPF和WinForm,

  对应XAML如下:

 <Grid>

         <wfi:WindowsFormsHost Width="300" HorizontalAlignment="Right">

             <wf:Label x:Name="lblName" Text="winForm控件在此” />

         </wfi:WindowsFormsHost>

         <wfi:WindowsFormsHost>

             <wf:Button x:Name="nnn" Text="确定”/>

         </wfi:WindowsFormsHost>

         <wfi:WindowsFormsHost>

             <zedgraph:ZedGraphControl x:Name="zedGraphControl" />

         </wfi:WindowsFormsHost>

   <Button Content="Button" Height="23" HorizontalAlignment="Left" 

Margin="10,10,0,0" 
Name="button1" VerticalAlignment="Top"

Width="75" Click="button1_Click" />

     </Grid>

  说明:<wfi:WindowsFormsHost></wfi:WindowsFormsHost>即为WinForm控件的宿主容器,每一个宿主容器只能放一个WinForm控件,如下例,放了三个WinForm控件,分别放在三个宿主容器里面,该容器可以设置属性来调整大小和布局。

  注意:如上我添加的WinForm控件如在指定其Name时,必须加前缀x:,如添加Lable时<wf:Label x:Name="lblName" Text="我是WPF中的WinForm控件” />

  否则后台代码无法访问。

  5、 如果要在WPF后台代码中访问上面的Lable,可直接像在WinForm中使用一样。如在点击某一按钮时改变Lable内容,代码如下:lblName.Text=”内容已改变”;

  6、 以使用WinForm控件ZedGraph绘制曲线为例,说明后台用法:

  在后台用Using添加对System.Windows.Forms和ZedGraph和System.Drawing命名空间的引用,完整后台代码如下:

 using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;
using System.Windows.Forms;

using ZedGraph;

using System.Drawing;

namespace ZedGraphAtWpf2

{

     /// <summary>

     /// MainWindow.xaml 的交互逻辑

     /// </summary>

     public partial class MainWindow : Window

     {

         public MainWindow()

         {

             InitializeComponent();

         }

         private void button1_Click(object sender, RoutedEventArgs e)

         {

             lblName.Text =”我是WinForm控件”;

         }

         private void Window_Loaded(object sender, RoutedEventArgs e)

         {

             ZedGraph.GraphPane myPane = zedGraphControl.GraphPane;

             myPane.Title.Text = "My Test Graph\n(For CodeProject Sample)";

             myPane.XAxis.Title.Text = "My X Axis";

             myPane.YAxis.Title.Text = "My Y Axis";

             PointPairList list1 = new PointPairList();

             PointPairList list2 = new PointPairList();

             for (int i = 0; i < 36; i++)

             {

                 double x = (double)i + 5;

                 double y1 = 1.5 + Math.Sin((double)i * 0.2);

                 double y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));

                 list1.Add(x, y1);

                 list2.Add(x, y2);

             }

             // Generate a red curve with diamond

             // symbols, and "Porsche" in the legend

             LineItem myCurve = myPane.AddCurve("Porsche",

                 list1, System.Drawing.Color.Red, SymbolType.Diamond);

             // Generate a blue curve with circle

             // symbols, and "Piper" in the legend

             LineItem myCurve2 = myPane.AddCurve("Piper",

                 list2, System.Drawing.Color.Blue, SymbolType.Circle);

             zedGraphControl.AxisChange();

         }

     }

}

  完整XAML如下:

<Window x:Class="ZedGraphAtWpf2.MainWindow"

          xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

         xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

         xmlns:zedgraph="clr-namespace:ZedGraph;assembly=ZedGraph"

         xmlns="//schemas.microsoft.com/winfx/2006/xaml/presentation"

         xmlns:x="//schemas.microsoft.com/winfx/2006/xaml"

         Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">

     <Grid>

         <wfi:WindowsFormsHost Width="300" HorizontalAlignment="Right">

             <wf:Label x:Name="lblName" Text="WinForm控件在此” />

         </wfi:WindowsFormsHost>

         <wfi:WindowsFormsHost>

             <wf:Button x:Name="nnn" Text="确定” />

         </wfi:WindowsFormsHost>

         <wfi:WindowsFormsHost>

             <zedgraph:ZedGraphControl x:Name="zedGraphControl" />

         </wfi:WindowsFormsHost>

  <Button Content="Button" Height="23" HorizontalAlignment="Left" 

Margin="10,10,0,0" 
Name="button1" VerticalAlignment="Top&quot; 

Width="75" Click="button1_Click" />

     </Grid>

</Window>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP