ورود

View Full Version : اضافه کردن یک usercontorl



powerboy2988
پنج شنبه 02 آذر 1391, 16:47 عصر
سلام

من با windows form یک user control ساختم...


چطوری می تونم اینو تو Xaml فایلهام اضافه کنم؟؟

وقتی می خوام اضافه کنم این error رو می ده :


A value of type 'TargetCtrl' cannot be added to a collection or dictionary of type 'UIElementCollection'.

ممنون

rg_BlackRose
جمعه 03 آذر 1391, 00:36 صبح
سلام

برای اینکه بتونید از کنترلهای Winform استفاده بکنید باید از WindowsFormsHost استفاده بکنید

اول از همه این فایل رو به لیست References های پروژه تون اضافه کنید ((WindowsFormsIntegration.dll))

اگه نتونستید پیداش کنید از 95453 دانلود کنید و بعد از خارج کردن از حالت فشرده به پوشه C:\windows\system32 کپی کنید.

بعد از اضافه کردن این فایل (WindowsFormsIntegration.dll) به Reference پروژه

95454


حالا برای اضافه کردن UserControl در محیط XAML از کد زیر استفاده بکنید نام UserControl که من ساختم (UserControl1) هست.

اول باید فضای نامی رو تعریف کنید.

xmlns:uc="clr-namespace:test"

و بعد از این کد استفاده بکنید.

<WindowsFormsHost>
<uc:UserControl1></uc:UserControl1>
</WindowsFormsHost>

کار تمام هست و UserControl شما به Window اضافه شده که اگه برنامه رو اجرا کنید مشاهده میکنید.


و اگر میخواهید در زمان اجرای برنامه UserControl به Window اضافه بشه از روشی که در پایین میگم استفاده کنید.

بعد از اضافه کردن این فایل (WindowsFormsIntegration.dll) به Reference پروژه

به محیط کد نویسی Window برید وکدهای زیر رو به کدها تون اضافه کنید

WindowsFormsHost host =new WindowsFormsHost();

// Create the UserControl1 control.
UserControl1 control = new UserControl1();

// Assign the UserControl1 as the host control's child.
host.Child = control;

// Add the interop host control to the Grid
// control's collection of child controls.
this.grid1.Children.Add(host);


برای درک بهتر دو تا پرژه به صورت جداگانه ضمیمه کردم که میتونید از اونها هم استفاده بکنید

1- 95456
2- 95457

در پناه حق

powerboy2988
جمعه 03 آذر 1391, 15:20 عصر
ممنون همین کار رو انجام دادم.. درست شد

یک سوال، کاره استانداری هست این روش؟؟؟ که کلا تو wpf از winform استفاده کنی؟


ممنون

mze666
جمعه 03 آذر 1391, 16:06 عصر
کار استانداردی نیست. این کار تنها برای مواقعی هستش که یک کنترل فوق العاده پیشرفته و سنگین توی win form دارید و پیاده سازی اون با WPF کار زمان بر و سختی هستش.

powerboy2988
شنبه 04 آذر 1391, 10:42 صبح
دقیقا هم مشکلم همینه..... چندبار اومدم پیاده سازی کنم تو wpf اما نشد...


بازم ممنون :(

aghayex
یک شنبه 05 آذر 1391, 16:05 عصر
استفاده از wpf بعلاوه امکاناتی که داره برای ساخت برنامه های زیبا هم هست و وقتی شما یه کنترل از نوع win 32 در برنامه استفاده می کنی از زیبایی و یک دست شدن برنامتون کم می کنه