美文网首页
WPF承载winform控件

WPF承载winform控件

作者: 勿念情 | 来源:发表于2016-10-25 17:02 被阅读0次

    主要是最近的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承载winform控件

          本文链接:https://www.haomeiwen.com/subject/phwruttx.html