MORTEZA66
دوشنبه 02 شهریور 1388, 13:40 عصر
سلام به همه
بسیاری از دوستان در مورد استفاده از wpf در windows application یا یه همچین چیزی سوال می پرسیدند(مثلا استفاده از کنترلهای winappدر wpf) و از اونجا که من هیچ جواب قانع کننده ای در این مورد پیدا نکردم گفتم ابن مطلب رو بذارم شاید مفبد باشه
عنوان: استفاده از Windows Forms Controls در wpf
مرحله اول: ایجاد یک wpf application که همه بلدند
مرحله دوم: اضافه کردن Reference "Windows FormsIntegration " و فضای نام Windows Formsبه پروژه
از منوی project گزینه Add Reference.. را انتخاب کنید و سپ به تب Browse بروید و سپس به آدرس
" C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 " بروید و فابل WindowsFormsIntegration.dll را انتخاب کرده و ok کنید
http://msdll.persiangig.com/projects/WinFormU.jpg
دوباره Add Reference را انتخاب کنید و در تب .Net گزینه System.Windows.Forms را انتخاب کرده و ok کنبد
http://msdll.persiangig.com/projects/WinFormV.jpg
این عمل باعث اضافه شدن اسمبلی مورد نیاز برای کار با windows forms control در پروژه wpf شما می شود
مرحله سوم: در فایل xaml خود name space زیر را در تگwindows اضافه کنید
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Win dows.Forms"
پس از این کار تگ window شما مشابه زیر خواهد بود:
<Window x:Class="WinFormInWPF.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Win dows.Forms"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Grid>
</Grid>
</Window>
مرحله چهارم: اضافه کردن Windows Forms control به xaml
برای ساختن Windows Forms control دو راه وجود دارد.
ما میتوانیم Windows Forms control مان را در کد xaml و با syntax آن ایجاد کنیم یا اینکه ان را در زمان اجرا و با استفاده از کدهای فرم مان و syntax وی بی یا C# ایجاد کنیم.
برای ایجاد از طریق کد xaml :
هر ویندوز کنترل در wpf باید در تگی بنام <WindowsFormsHost> قرار بگیرد مانند زیر:
<Grid>
<WindowsFormsHost>
<wf:NumericUpDown x:Name="num1" />
</WindowsFormsHost>
</Grid>
برای اینکه بتوانیم با این کنترل ها کار کنیم بایستی name space انها را به پروژه و در فایل Window1.xaml.vb اضافه کنیم به صورت زیر
Imports System.Windows.Forms
Imports System.Windows.Forms.Integration
برای استفاده از این کنترل ها می توانید مانند زیر و از نام آنها استفاده کنید
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
num1.Minimum = 0
num1.Maximum = 90000
num1.Value = 1234
num1.UpDownAlign = LeftRightAlignment.Right
num1.BorderStyle = BorderStyle.Fixed3D
End Sub
نمونه عکس خروجی:
http://msdll.persiangig.com/projects/output.jpg
کدها:
<WindowsFormsHost Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" >
<wf:NumericUpDown x:Name="num1" />
</WindowsFormsHost>
نکته: برای ایجاد در محیط کدنویسی با syntax وی بی
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Dim host As New WindowsFormsHost
Dim num1 As New System.Windows.Forms.NumericUpDown
host.Child = num1
mygrid.children.add(host)
End Sub
نکته: تمامی این مراحل به صورت دستی تست و اجرا شده است و صرف نوشتن نبوده.
موفق و پیروز باشید.
بسیاری از دوستان در مورد استفاده از wpf در windows application یا یه همچین چیزی سوال می پرسیدند(مثلا استفاده از کنترلهای winappدر wpf) و از اونجا که من هیچ جواب قانع کننده ای در این مورد پیدا نکردم گفتم ابن مطلب رو بذارم شاید مفبد باشه
عنوان: استفاده از Windows Forms Controls در wpf
مرحله اول: ایجاد یک wpf application که همه بلدند
مرحله دوم: اضافه کردن Reference "Windows FormsIntegration " و فضای نام Windows Formsبه پروژه
از منوی project گزینه Add Reference.. را انتخاب کنید و سپ به تب Browse بروید و سپس به آدرس
" C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 " بروید و فابل WindowsFormsIntegration.dll را انتخاب کرده و ok کنید
http://msdll.persiangig.com/projects/WinFormU.jpg
دوباره Add Reference را انتخاب کنید و در تب .Net گزینه System.Windows.Forms را انتخاب کرده و ok کنبد
http://msdll.persiangig.com/projects/WinFormV.jpg
این عمل باعث اضافه شدن اسمبلی مورد نیاز برای کار با windows forms control در پروژه wpf شما می شود
مرحله سوم: در فایل xaml خود name space زیر را در تگwindows اضافه کنید
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Win dows.Forms"
پس از این کار تگ window شما مشابه زیر خواهد بود:
<Window x:Class="WinFormInWPF.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Win dows.Forms"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Grid>
</Grid>
</Window>
مرحله چهارم: اضافه کردن Windows Forms control به xaml
برای ساختن Windows Forms control دو راه وجود دارد.
ما میتوانیم Windows Forms control مان را در کد xaml و با syntax آن ایجاد کنیم یا اینکه ان را در زمان اجرا و با استفاده از کدهای فرم مان و syntax وی بی یا C# ایجاد کنیم.
برای ایجاد از طریق کد xaml :
هر ویندوز کنترل در wpf باید در تگی بنام <WindowsFormsHost> قرار بگیرد مانند زیر:
<Grid>
<WindowsFormsHost>
<wf:NumericUpDown x:Name="num1" />
</WindowsFormsHost>
</Grid>
برای اینکه بتوانیم با این کنترل ها کار کنیم بایستی name space انها را به پروژه و در فایل Window1.xaml.vb اضافه کنیم به صورت زیر
Imports System.Windows.Forms
Imports System.Windows.Forms.Integration
برای استفاده از این کنترل ها می توانید مانند زیر و از نام آنها استفاده کنید
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
num1.Minimum = 0
num1.Maximum = 90000
num1.Value = 1234
num1.UpDownAlign = LeftRightAlignment.Right
num1.BorderStyle = BorderStyle.Fixed3D
End Sub
نمونه عکس خروجی:
http://msdll.persiangig.com/projects/output.jpg
کدها:
<WindowsFormsHost Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" >
<wf:NumericUpDown x:Name="num1" />
</WindowsFormsHost>
نکته: برای ایجاد در محیط کدنویسی با syntax وی بی
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Dim host As New WindowsFormsHost
Dim num1 As New System.Windows.Forms.NumericUpDown
host.Child = num1
mygrid.children.add(host)
End Sub
نکته: تمامی این مراحل به صورت دستی تست و اجرا شده است و صرف نوشتن نبوده.
موفق و پیروز باشید.