WPF承载winform控件

主要是最近的WPF项目中,用到了别的公司的东西,需要调用dll来使用该公司的控件。

在WPF中使用WinForm主要是以下几个步骤:

  1. 添加引用
    如果说需要在xaml中使用WinForm的控件,那么需要用到的是
  • WindowsFormsIntegration
  • System.Windows.Forms
  1. 添加了第一个引用之后,就能够在xaml中使用WindowsFormsHost标签。
  2. 添加了第二个引用之后,你需要在xaml中声明xmlns,然后就能使用WinForm的控件了。
xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"`
    <WindowsFormsHost>
      <WinFormControls:Label Text="Hello World"/>
    </WindowsFormsHost>

需要注意的是:

  1. WinForm会把你的整个层面给遮掉,就算你用ZIndex也没用。盖住就盖住了,不显示下面的东西
  2. 引用的第三方dll,需要在一开始的时候,使用Assembly.LoadFrom加载。不然中间可能运行到一半的时候报错RE。

WinForm的覆盖问题,解决的方法也是很无语的。解铃还须系铃人,WindowsFormsHost遮掉的东西,还是用WindowFormsHost显示。原理就是,设置好大小,相互覆盖(来啊,互相伤害啊)。
然后,WindowFormsHost除了放WinForm的控件之外,也可以放WPF的控件。就像这样:

<WindowsFormsHost >
  <ElementHost>
    <StackPanel>
      //这里放WPF的东西,比如这个StackPanel
      //ElementHost就是承载WPF控件的东西
    </StackPanel>
  </ElementHost>
</WindowsFormsHost>

上面的就是套在WPF中的WinForm套用WPF的方法(绕口令~~~)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 什么是WPF? WPF的历史? 为什么要用WPF及WPF作用 WPF与winForm区别? 什么是WPF? ...
    灬52赫兹灬阅读 11,156评论 2 11
  • 此文章将记录我在C# Winform 开发过程中遇到的问题及相关知识技术点 ,方便自己以后查阅..... 博客原文...
    遇见_c256阅读 8,815评论 1 21
  • 这个秋天,愿时光多一些明媚,岁月静好,你亦无恙。 秋总是不经意间来到身边,小院里的香樟树一年四季都有落叶凋零,没有...
    任亚阅读 1,885评论 0 0
  • 男同志下班回来跟我说, 我今天竟然就穿着哪吒的T恤就去上班了!—— T恤旧得早该不要不要的了,哪吒脸都洗成包公脸了...
    S猫阅读 3,134评论 0 1
  • 门店销售服务六步曲的第一步---迎宾: 迎宾要点:肢体直立,两手自然下垂或交叉,面带亲和,轻轻微笑,语气平和,吐字...
    思念的诗阅读 5,867评论 0 1