關於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,至此程序完成。很簡單強大吧~

再次看下效果圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM