• WPF使用Winform控件问题


    这是个很大问题,细节问题比较多,以后会在这里总结使用过程中的问题。

    1.wpf使用winform自身的控件

    这个应该没什么大问题,直接用上篇文章提到的WindowsFormsHost,当然这不能解决所有的问题,比如文章中提到的Winform控件的mousewheel事件无法响应,这只是我遇到的,不光是我这里MouseWheel in WindowsFormsHost也有说明,但都不是最好的解决方法。这是.Net的缺陷,应该会在下一个版本中修复。上篇文章中也引用高手的解决方法了,大家可以借鉴,但我觉得太繁琐了,遇到这样的问题我就避开它。

    2.wpf使用winform用户控件

         WindowsFormsHost元素的一个最重要的限制是它只能包含一个Windows窗体控件。为了补偿,可以使用Windows窗体包容器控件。不过,Windows窗体包容器控件不支持XAML模型,所以需要以编程的方式填充包容器控件的内容。更好的方法是创建一个Windows窗体用户控件。可以在一个引用的单独的程序集中定义用户控件,或者可以直接将它添加到WPF项目中。这种方法提供了两个最佳功能——为用户控件提供了全部的设计时支持,并且提供了一个很容易的方法将用户控件集成到wpf窗口中。实际上,使用用户控件可以提供额外的抽象层,这与使用单独的窗口类似。因为包含用户控件的wpf窗口不能访问用户控件的单个控件。反而,它将于添加到用户控件的更高层次的属性进行交互,然后这些属性修改内部控件。这样会得到更好的封装性,并且更简单,因为这样可以在wpf窗口和自定义的windows窗体内容之间限制交互范围。这种方法还使得将来迁移到只用wpf元素的解决方案更加容易,可以简单地创建一个具有相同属性的wpf用户控件,并替换合适的WindowsFormsHost控件

    在WPF项目中新建立一个Winform的用户控件,在WPF窗体内添加WindowsFormsHost控件,WindowsFormsHost控件可以放winform用户控件。

    WinformUserControl wfuc = new WinformUserControl();
    uswf.Child = wfuc;
    
    
    
    ---XAML------------------------------------
    <WindowsFormsHost Name="uswf">
    </WindowsFormsHost>

    就这样很简单

    Reference:WPF 浏览PDF 文件

    技术追求卓越 梦想创造未来 ——Daywei

  • 相关阅读:
    《编写高质量代码Web前端开发修炼之道》(读书笔记) windrainpy
    jQuery琐碎笔记 windrainpy
    【记录】事件冒泡和事件捕获 windrainpy
    JS比较容易迷惑的几个地方 windrainpy
    【转】成为顶级程序员的唯一途径! windrainpy
    jquery键盘事件 windrainpy
    【转】IE绝对定位元素神秘消失或被遮挡的解决 windrainpy
    简单算法
    HTTP的状态
    css的兼容问题
  • 原文地址:https://www.cnblogs.com/Daywei/p/3032670.html
Copyright © 2020-2023  润新知