• 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件


    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能引用WPF控件,怎么可能同样运行在.net Fromework框架下的Winfrom不能运行呢。经过慢慢尝试终于找到一个简单的解决方案,神马反射,神马工厂都是浮云,只需要在Winform项目中引用WPF项目下引用的三个程序集:PresentationCore,PrentationFramework,WindowsBase,

    这个时就可以使用WPF窗体类实例中的属性和方法了。

     

    在Winform窗体中使用WPF控件

    转自:http://www.cnblogs.com/DebugLZQ/archive/2012/05/19/2508846.html

    今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件。原有是我在百度上搜索相关信息无果,遂干脆动手自己实现。

    WPF控件的漂亮是Winform无法匹及的,本文主旨是在Winform工程中如何使用WPF控件

    先看下效果,如下图:

    左边是传统的Winform控件,右边是DebugLZQ引入的WPF控件,我们可以很清楚的看到图片的“半透明”效果、TextBox的透明背景!界面很Cool吧~

    下面就介绍下,这个创新性工程的创建过程,并附上所有代码:

    首先,添加一个WPF自定义控件,控件的xaml很简单,代码如下:

    复制代码
    <Grid  >        
            <Image  Margin="10,10,10,90" x:Name="img" Stretch="Uniform" Opacity="1">
                <Image.BitmapEffect>
                    <DropShadowBitmapEffect Opacity="1" />
                </Image.BitmapEffect>
            </Image>
            <TextBox Background="Transparent"  Foreground="White" Height="40" FontSize="32" Margin="44,0,56,36" x:Name="txtBox1" Opacity="0.5" Text="" VerticalAlignment="Bottom" />
        </Grid>
    复制代码

    其次,我们需要添加相应的设置效果的函数,代码如下:

    复制代码
            public void SetSource(string fileName)
            {
                img.Source = new BitmapImage(new Uri(fileName) );
            }
    
            public void SetOpacity(double opacity)
            {
                img.Opacity = opacity;
            }
            //
            public string GetText()
            {
                return txtBox1.Text;
            }
    复制代码

    OK,以上步骤完成后我们建立一个Winform应用程序,添加先关的引用,这个非常重要,否则控件无法正常工作,引用的清单如下:

    这里需要重点提出的是WindowsFormsIntegration这个引用。

    我们编译整个项目,编译成功在工具箱中会出现相应的控件,如下图:

    拖动这个控件到Winform窗体中,调用相应的函数。函数调用代码如下:

    userControl11.SetSource(@"D:临时文件新建文件夹DebugLZQ.jpg");
                
    userControl11.SetOpacity(0.5);
    string text = userControl11.GetText();

    OK,至此程序完成。很简单强大吧~

    再次看下效果图:

     

     
  • 相关阅读:
    java:LeakFilling (Linux)
    java:redis(redis安装配置,redis的伪集群配置)
    java:Linux(简单命令,远程ssh使用hostname访问,.免密钥登录配置)
    java:easyui(重点示例)
    任意文件下载漏洞学习
    Centos7 nginx报错403 forbidden
    Centos7 nginx提示错误 Access denied.
    Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment
    PHP载入GIF图像造成服务器宕机(CVE-2018-5711)的漏洞复现
    Python问题:'Nonetype' object is not iterable
  • 原文地址:https://www.cnblogs.com/hnfxs/p/3222118.html
Copyright © 2020-2023  润新知