WPF How - To : Embed Winform Control

Bagi anda yang berpengalaman dengan WinForm tentunya akan sedikit merasa kehilangan ketika harus mengembangkan aplikasi yang telah menggunakan WPF. Kehilangan? yep didalam WPF ada beberapa kontrol standar dalam Winform yang tidak ada. Sebagai contoh sebutlah DateTimePicker, MonthCalendar dan beberapa kontrol lainnya. Memang untuk beberapa kontrol tersebut telah ada komponen WPF-nya yang dapat anda download dari beberapa perusahaan seperti devexpress atau telerik atau mungkin intersoftpf? namun tentunya hal tersebut agak2x merepotkan dan bisa jadi mengharuskan anda merogoh kocek untuk membeli komponen tersebut atau bahkan membuat komponen-komponen tersebut secara manual.

Namun tentang saja, kita dapat menambahkan komponen-komponen Winform tersebut ke dalam jendela aplikasi WPF kita. caranya cukup mudah, kita hanya perlu menggunakan sebuah kelas bernama WindowsFormHost yang ada pada file dll bernama WindowsFormsIntegration.dll. Sehingga dengan menggunakan kelas ini maka kita hanya tinggal menambahkan komponen-komponen yang ada dalam winform sebagai properti child dari objek kelas tersebut dan kemudian menambahkan objek dari kelas tersebut ke dalam jendela WPF kita.

Contoh kode dan langkah praktis penggunaannya adalah sebagai berikut :

1. Buat sebuah project dengan tipe WPF Application

2. Pada solution explorer tambahkan refensi ke System.Windows.Forms (dll yang mengandung kontrol2x bawaan winform) dan WindowsFormsIntegration

3. Pada file xaml anda di bagian element Window tambahkan sebuah atribut xml namespace berikut

xmlns:wfc="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

4. kemudian untuk menggunakannnya anda tinggal membuat sebuah elemen WindowsFormsHost dan masukkan kontrol2x winform sebagai child dari elemen tersebut seperti kode dibawah ini.

<Window x:Class="Project1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wfc="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
    Title="Window1" Height="300" Width="300" >
    <Grid>
        <WindowsFormsHost>
            <wfc:DateTimePicker></wfc:DateTimePicker>
        </WindowsFormsHost>
    </Grid>
</Window>

Dalam contoh diatas maka didalam jendela aplikasi WPF anda akan ditampilkan sebuah kontrol DateTimePicker bawaan dari winform seperti cuplikan layar berikut :

image

menarik bukan? sehingga jika anda telah menginvestasikan tenaga coding anda untuk komponen Winform maka anda tidak perlu kuatir, komponen tersebut dapat tetap anda gunakan ketika berurusan dengan WPF, namun ada beberapa catatan yang perlu diperhatikan ketika berurusan dengan WindowsFormsHost yaitu :

1. elemen ini tidak dapat dikenakan animasi

2. elemen ini akan selalu "on top", sehingga akan selalu menimpa tampilan dari komponen/objek2x lain

 

cheers....

Share this post: | | | |
Published Tuesday, September 23, 2008 9:06 PM by ronald

Comments

# re: WPF How - To : Embed Winform Control

Wednesday, September 24, 2008 2:50 AM by saseno

gilee.... keren keren lu nald....

dah lama gak buka blogmu.. ternyata isinya berat banget... salut buatmu nald..

entar ajarin aku ya kapan kapan....

Powered by Community Server (Commercial Edition), by Telligent Systems