PDA

View Full Version : سوال: کوچ از Window forms به WPF



a47b1b590cfe48fd8f356c65
دوشنبه 14 اردیبهشت 1394, 18:01 عصر
سلام دوستان ، خسته نباشین ،
من در حد خیلی خوبی به Windows Forms مسلط هستم، حالا یک سوال از حضورتون داشتم ،
اصولا به جز اینکه در برنامه های WPF ظاهر خوب برنامه و توانایی سفارشی سازی ظاهر برنامه رو داریم ، چه دلیل خوب دیگه ای هست که من بیام سمت WPF ?
خیلی ممنونم

Mofid.m
پنج شنبه 17 اردیبهشت 1394, 22:13 عصر
درود
بیشتر قدرت WPF روی ظاهر برنامه و قدرت طراحی هستش و همین خیلی دلیل کمی نیست.
تو WPF رو کوچیکترین اجزا یه شی کنترل داری
همچی رو نمیشه توضیح داد باید کار کنی تا متوجه بشی.
شما اگر یه جستجو بزنی تو اینترنت میتونی مطالب فارسی زیادی رو پیدا کنی.

SabaSabouhi
شنبه 19 اردیبهشت 1394, 08:22 صبح
سلام دوستان ، خسته نباشین ،
من در حد خیلی خوبی به Windows Forms مسلط هستم، حالا یک سوال از حضورتون داشتم ،
اصولا به جز اینکه در برنامه های WPF ظاهر خوب برنامه و توانایی سفارشی سازی ظاهر برنامه رو داریم ، چه دلیل خوب دیگه ای هست که من بیام سمت WPF ?
خیلی ممنونم

سلام
وقتی شروع می‌کنی کار رو ممکنه از این کوچ کردن پشیمون بشی، اما یه کم که کار می‌کنی دیگه به هیچ قیمت
حاضر نمی‌شی برگردی سراغ winForm.
* قدرت فوق‌العاده تو Binding تا حدی که شاید باورت نشه. یعنی می‌تونی مثلاً طول یه textBox رو متصل کنی به متنی
که توش نوشته شده. این امکان واقعاً بی‌نظیره. شاید بگی خوب که چی! ... اما وقتی که شروع کردی به نوشتن
کنترل‌ها اون موقع می‌بینی که چه‌قدر فوق‌العاده هست.
* DependencyProperty این هم یکی از ویژگی‌های بسیار عالی هست. به‌ویژه وقتی می‌خوای کنترل بنویسی.
* امکان تولید خروجی به صورت Tag. شاید برای بعضی‌ها این جالب نباشه، اما من ترجیح می‌دم که کنترل‌هام رو به
صورت Tag توی صفحه بچینم. وقتی ASP.Net کار می‌کردم، این برام خیلی دلچسب بود، حالا همین کار رو توی WPF
می‌تونم انجام بدم.
* امکان ایجاد Style مثل وب ( البته نه کاملاً مثل وب ) مثلاً کافیه توی App.Xaml دکمه‌هات رو دور گرد کنی ( فقط با چند
خط script ) و دیگه تو تمام برنامه دکمه‌هات دور گرد می‌شن.

و بسیاری امکانات دیگه، اگه همین امروز مهاجرت به WPF رو شروع نکنی، فردا یک روز عقبی.

صباصبوحی

alireza264
دوشنبه 01 تیر 1394, 14:51 عصر
سلام دوستان ، خسته نباشین ،
من در حد خیلی خوبی به Windows Forms مسلط هستم، حالا یک سوال از حضورتون داشتم ،
اصولا به جز اینکه در برنامه های WPF ظاهر خوب برنامه و توانایی سفارشی سازی ظاهر برنامه رو داریم ، چه دلیل خوب دیگه ای هست که من بیام سمت WPF ?
خیلی ممنونم
دلیلش سادست
1- مایکروسافت از سال 2008 دیگه winform رو توسعه نداده
2- اجرای winform روی سخت افزار و سیستم عامل های جدید یه کمی اذیت میکنه
3-تکنیک Mvvm
4- استفاده از net framework 4.5 و بالاتر
5- رابط کاربری Xaml که در کارت گرافیگ اجرا میشه و مبتنی بر directx هستش
6- جدا کردن کد از رابط کاربر
7- ساخت ابزار و کنترل های مورد نیاز به سادگی
8- وجود کنترلهای grid- stackjpanel-dockpanel-canvas و...
9-ساخت resourcer - style و... به سادگی
10- وجود dependeny اشیا
11- استفاده از انیمیشن بدون رفتن تو مود گرافیگ
و ...... دهها قابلیت دیگه

مثلا فرض کن یه listbox بسازی که هر سطزش حاوی نام-نام خانوادگی -کد- و عکس فرد باشه

برای شروع هم بنظرم با همون روش winform توی wpf شروع کنی تا ذهنت کم کم باهاش آشنا بشه و ازش لذت ببری . منم همینجوری شروع کردم

Mori Bone
دوشنبه 01 تیر 1394, 19:23 عصر
دلیلش سادست
1- مایکروسافت از سال 2008 دیگه winform رو توسعه نداده
2- اجرای winform روی سخت افزار و سیستم عامل های جدید یه کمی اذیت میکنه
3-تکنیک Mvvm
4- استفاده از net framework 4.5 و بالاتر
5- رابط کاربری Xaml که در کارت گرافیگ اجرا میشه و مبتنی بر directx هستش
6- جدا کردن کد از رابط کاربر
7- ساخت ابزار و کنترل های مورد نیاز به سادگی
8- وجود کنترلهای grid- stackjpanel-dockpanel-canvas و...
9-ساخت resourcer - style و... به سادگی
10- وجود dependeny اشیا
11- استفاده از انیمیشن بدون رفتن تو مود گرافیگ
و ...... دهها قابلیت دیگه

مثلا فرض کن یه listbox بسازی که هر سطزش حاوی نام-نام خانوادگی -کد- و عکس فرد باشه

شروع هم بنظرم با همون روش winform توی wpf شروع کنی تا ذهنت کم کم باهاش آشنا بشه و ازش لذت ببری . منم همینجوری شروع کردم

تو جوابتون که کاملا درسته، قسمته زیر رو بیشتر توضیح بدید:

4- استفاده از net framework 4.5 و بالاتر

alireza264
دوشنبه 01 تیر 1394, 20:33 عصر
سلام winform تا net formwork 4 رو پشتیبانی می کنه و Refrence ها و ابزارهایی که در net framework 4.5 تعریف شده اند قابل دسترس نیستند

Mori Bone
دوشنبه 01 تیر 1394, 23:06 عصر
سلام winform تا net formwork 4 رو پشتیبانی می کنه و Refrence ها و ابزارهایی که در net framework 4.5 تعریف شده اند قابل دسترس نیستند

wpf و xaml از زمان ویندوز ویستا و نت فرمورک 3.5 پابر جاس و میشه این فناوری روبر پایه 3.5 هم نوشت

alireza264
سه شنبه 02 تیر 1394, 00:29 صبح
wpf و xaml از زمان ویندوز ویستا و نت فرمورک 3.5 پابر جاس و میشه این فناوری روبر پایه 3.5 هم نوشت


سلام
مطمئن باش پشیمون نمیشی صادقانه میگم حدود 4 ساله wpf کار می کنم و جز یکی دو ماه اول هیچ وقت به فکر winform نیفتادم
چند نمونه
ZipArchive Class و ZipFile Class از فضای System.IO.Compression (https://msdn.microsoft.com/en-us/library/system.io.compression%28v=vs.110%29.aspx) فقط در 4.5 و 4.6 وجود داره
بعنوان مثال به این آدرس برو
https://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive%28v=vs.110%29.asp x

مقایسه System.IO.Compression (https://msdn.microsoft.com/en-us/library/system.io.compression%28v=vs.110%29.aspx) در 4 و 4.5
https://msdn.microsoft.com/en-us/library/system.io.compression%28v=vs.100%29.aspx


System.IO.Compression Namespace
.NET Framework 4

The System.IO.Compression namespace contains classes that provide basic compression and decompression services for streams.
Classes
Public class DeflateStream Provides methods and properties for compressing and decompressing streams using the Deflate algorithm.
Public class GZipStream Provides methods and properties used to compress and decompress streams.

Enumerations
CompressionMode Specifies whether to compress or decompress the underlying stream.




.NET Framework 4.6 and 4.5


The System.IO.Compression namespace contains classes that provide basic compression and decompression services for streams.

Public class Supported by Portable Class Library DeflateStream Provides methods and properties for compressing and decompressing streams by using the Deflate algorithm.
Public class Supported by Portable Class Library GZipStream Provides methods and properties used to compress and decompress streams.
Public class ZipArchive Represents a package of compressed files in the zip archive format.
Public class ZipArchiveEntry Represents a compressed file within a zip archive.
Public class ZipFile Provides static methods for creating, extracting, and opening zip archives.
Public class ZipFileExtensions Provides extension methods for the ZipArchive and ZipArchiveEntry classes.
Enumerations

Public enumeration CompressionLevel Specifies values that indicate whether a compression operation emphasizes speed or compression size.
Public enumeration Supported by Portable Class Library CompressionMode Specifies whether to compress or decompress the underlying stream.
Public enumeration ZipArchiveMode Specifies values for interacting



عکس زیر هم یک listbox هستش که داخلش از دو تا Textblock استفاده شده و بعنوان منو بکار برده شده و موس در لحظه عکس گرفتن روی اضافه کردن بوده
132521

اینم کدش

<ListBox Name="list" Margin="2" ItemsSource="{Binding}" VerticalAlignment="Stretch"
Grid.RowSpan="11" Width="Auto" HorizontalAlignment="Stretch" MouseLeftButtonUp="list_MouseLeftButtonUp">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Titl_Menu}" FontWeight="Bold" FontSize="14" Foreground="YellowGreen"/>
<TextBlock Text="{Binding Path=Discription_Menu}" FontStyle="Italic" FontSize="11" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>


مثال بالا با اضافه شدن عکس به هر سطر listbox

132524


<ListBox Name="list" Margin="2" ItemsSource="{Binding}" VerticalAlignment="Stretch"
Grid.RowSpan="11" Width="Auto" HorizontalAlignment="Stretch" MouseLeftButtonUp="list_MouseLeftButtonUp">
<ListBox.ItemTemplate>
<DataTemplate>

<DockPanel>
<Image Name="image2" Stretch="Fill" Width="100" Source="{Binding Path=Pic_Menu}" Height="40" />

<StackPanel>
<TextBlock Text="{Binding Path=Titl_Menu}" FontWeight="Bold" FontSize="14" Foreground="YellowGreen"/>
<TextBlock Text="{Binding Path=Discription_Menu}" FontStyle="Italic" FontSize="11" />
</StackPanel>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

Mori Bone
سه شنبه 02 تیر 1394, 13:45 عصر
منظورمو فکر کنم بد فهمیدی:متفکر:

ehsan_g
سه شنبه 13 مرداد 1394, 18:11 عصر
سلام بر همه دوستان گرامي
من هم با مطالعه بر روي wpf ميخواهم از win form خارج شوم ولي با كلي سوال و شبهه دست وپنجه نرم ميكنم اگه اساتيد راهنمايي كنند ممنون ميشم
مشكل عمده من اينه كه در winform تمام اشيا رو دوباره سازي وسفاشي سازي كردم و در تمام پروژه هام ازش استفاده ميكنم حالا اينجا چگونه ميشود
تكس باكسها
گريد ويوها
كامبوباكس ها
فرمها
وديگر اشيا و كنترلرها چگونه و به چه شكل تعريف و ساخته ميشن
لطفا راهنمايي فرماييد
با تشكر فراوان

SabaSabouhi
چهارشنبه 14 مرداد 1394, 14:57 عصر
سلام بر همه دوستان گرامي
من هم با مطالعه بر روي wpf ميخواهم از win form خارج شوم ولي با كلي سوال و شبهه دست وپنجه نرم ميكنم اگه اساتيد راهنمايي كنند ممنون ميشم
مشكل عمده من اينه كه در winform تمام اشيا رو دوباره سازي وسفاشي سازي كردم و در تمام پروژه هام ازش استفاده ميكنم حالا اينجا چگونه ميشود
تكس باكسها
گريد ويوها
كامبوباكس ها
فرمها
وديگر اشيا و كنترلرها چگونه و به چه شكل تعريف و ساخته ميشن
لطفا راهنمايي فرماييد
با تشكر فراوان

سلام
اگه از اولش بخوای کنترل بسازی شاید ازش زده بشی.
به‌تره اول بدون ساخت کنترل با WPF کار کنی و باهاش آشنا بشی. بخصوص با Binding که زیاد باهاش کار خواهی داشت.
وقتی احساس کردی که تو شرایط جدید جا افتادی، بعد برو سراغ ساخت کنترل که به نظر من جذاب‌ترین قسمت wpf هست.

صبا صبوحی

behzadkhan
پنج شنبه 15 مرداد 1394, 11:10 صبح
با سلام

دوستان عزیز

من هم هر دفعه که خواستم برم سراغ wpf به مشکل خوردم و دوباره برگشتم سراغ WinForm

دلیلش هم این بود که به خاطر این بود می خواستم یک موردی را که در WinForm درست کرده بودم مشابهش را نمی توانستم در WPF درست کنم.

البته به خاطر این بود که WPF بلد نبودم.

اینم بگم که یکی دو تا برنامه در WPF درست کردم. و واقعا باید بگم که دست برنامه نویس همه جوره باز هست.

===============================================

حالا

بنا به گفته دوستان

می خواهیم خیلی ساده با همان ابزارهای موجود کار را شروع می کنم . . .

=================================================

اگر امکانش هست باز هم در مورد WPF صحبت کنید.

مثلا بگویید که من فلان کار را توانستم با WPF انجام بدم ولی با WinForm نتوانستم.

و یا

بگید که در WPF یک موردی را در یک روز انجام دادم ولی با WinForm یک هفته طول کشید.

با تشکر

alireza264
پنج شنبه 15 مرداد 1394, 15:44 عصر
سلام
مهندس جان بگو می خوای چیکار کنی مطمئن باش تا جای ممکن کمک میکنیم.
ولی اگه می خوای مفاهیم رو به سرعت بدونی من فیلمای آموزشی Lynda رو توصیه میکنم

behzadkhan
پنج شنبه 15 مرداد 1394, 22:52 عصر
سلام
مهندس جان بگو می خوای چیکار کنی مطمئن باش تا جای ممکن کمک میکنیم.
ولی اگه می خوای مفاهیم رو به سرعت بدونی من فیلمای آموزشی Lynda رو توصیه میکنم

با سلام

دوست عزیز

آموزش که زیاد هست.

یکم با زبان اصلی مشکل دارم.

می توانید

نمونه رایگان فارسی معرفی کنید.

===============================

فکر می کنم بهترین راه این هست که جدیدترین پروژه ای که قصد انجامش پیش آمد. مستقیما برم سراغ WPF.

با تشکر

elec60
یک شنبه 08 شهریور 1394, 22:41 عصر
سلام winform تا net formwork 4 رو پشتیبانی می کنه و Refrence ها و ابزارهایی که در net framework 4.5 تعریف شده اند قابل دسترس نیستند

کی همچین چیزی گفته؟!!!!

HAMRAHSOFT.IR
دوشنبه 09 شهریور 1394, 06:23 صبح
سلام مبشه یک نمونه
Binding قرار بدید؟ و بگید آموزش ساخت کنترل سفارشی کجا هست؟

پیام حیاتی
سه شنبه 10 شهریور 1394, 17:36 عصر
سلام
پیشنهاد می کنم به جای کوچ کردن تخصص خودتون رو در WinForm بالا ببرید ، طراحی و دیزاین بهتر رو هم می توان تا اندازه قابل قبول در پروژه های WinForm پیاده سازی کرد.
شاید در 100 پروژه ای که دریافت می کنید یکی از آنها نیاز به کنترل سفارشی و یا ابداع چرخ ار ابتدا داشته باشه که اونهم می تونید با تسلط و تکنیک های برنامه نویسی در WinForm برطرف کنید.
موفق باشید.

HAMRAHSOFT.IR
سه شنبه 10 شهریور 1394, 21:43 عصر
آموزش ساخت کنترل یا dllوجود نداره؟

SabaSabouhi
چهارشنبه 11 شهریور 1394, 08:56 صبح
سلام
پیشنهاد می کنم به جای کوچ کردن تخصص خودتون رو در WinForm بالا ببرید ، طراحی و دیزاین بهتر رو هم می توان تا اندازه قابل قبول در پروژه های WinForm پیاده سازی کرد.
شاید در 100 پروژه ای که دریافت می کنید یکی از آنها نیاز به کنترل سفارشی و یا ابداع چرخ ار ابتدا داشته باشه که اونهم می تونید با تسلط و تکنیک های برنامه نویسی در WinForm برطرف کنید.
موفق باشید.

سلام
شما اگه دوست دارین با تکنولوژی 10-15 سال پیش کار کنین، میل خودتونه، اما به دوستان توصیه نکنید که پیشرفت نکنن.
WPF به اندازه‌ای جذاب هست که امکان نداره کسی باهاش کار کنه و حاضر باشه برگرده سراغ WinForm.

صبا صبوحی

پیام حیاتی
چهارشنبه 11 شهریور 1394, 10:37 صبح
سلام
شما اگه دوست دارین با تکنولوژی 10-15 سال پیش کار کنین، میل خودتونه، اما به دوستان توصیه نکنید که پیشرفت نکنن.
WPF به اندازه‌ای جذاب هست که امکان نداره کسی باهاش کار کنه و حاضر باشه برگرده سراغ WinForm.

صبا صبوحی
بنده پیشنهاد دادم ، نگفتم چه کسی چه کاری کنه چه کاری نکنه.
پیشنهاد دادم پیشرفتشون را در winform تخصصی تر ادامه بده نه اینکه پیشرفت نکنه.
این نگاه متعصبانه جزء تخریب و به حاشیه کشیدن هیچ نتیجه مثبت دیگری ندارد.
موفق باشید.

SabaSabouhi
چهارشنبه 11 شهریور 1394, 18:58 عصر
بنده پیشنهاد دادم ، نگفتم چه کسی چه کاری کنه چه کاری نکنه.
پیشنهاد دادم پیشرفتشون را در winform تخصصی تر ادامه بده نه اینکه پیشرفت نکنه.
این نگاه متعصبانه جزء تخریب و به حاشیه کشیدن هیچ نتیجه مثبت دیگری ندارد.
موفق باشید.

سلام
دوست عزیز، این که بریم سراغ تکنولوژی جدید کجاش متعصبانه هست؟
تا چند سال پیش بعد از حدود 40 سال تو کشور ما پیکان تولید می‌شد با همون شکل قدیمش
و مطمئن باش که تا سال‌های سال همین قیافه‌ی پراید و پژو رو باید تحمل کنیم.

راستش به نظر من تعصب در سکون هست و نه در حرکت.

اگه مصرف کننده دو گزینه جلوش داشته باشه که یکی WinForm و دیگری WPF باشه به نظر شما کدوم
رو انتخاب می‌کنه؟

ضمن این که برنامه‌نویسی با WPF بعد از این که تو محیط جدید جا بیافتی، از نظر سختی هیچ تفاوتی با WinForm
نداره،و یه جاهایی حتا راحت‌تر و خوش‌آیندتر هم هست.

صبا صبوحی

alireza264
چهارشنبه 11 شهریور 1394, 22:43 عصر
سلام
مهندس گرامی پیام حیاتی
تفاوت wpf با winform تنها در ظاهر و رابط کاربر نیست .پیشنهاد میکنم پست های بالا رو یه بار دیگه مطالعه کنی .
اما من یکی دو ماه پیش یه تاپیک زدم و در خواستم رو نوشتم صادقانه میگم اگه بتونی جوابمو بدی سپاسگزارم چون برای ساخت messagebox در پروژه های قدیمی winform بهش احتیاج دارم

سوال :
در wpf رخدادی بنام Completed و BeginAnimation برای ThicknessAnimation وجود داره که با Completed میشه تعیین کرد پس ازپایان انیمشین چه کاری انجام بشه و باBeginAnimation میشه خصوصیت مورد نظر شی رو باThicknessAnimation مرتبط کرد و انیمیشن رو شروع کرد .سوال من اینه معادل اینا در winform چیه ویا براش باید چیکار کرد

Thickness thick = new Thickness();

thick.Left = lbl2.Margin.Left;

thick.Right = lbl2.Margin.Right;

thick.Top = (lbl2.Margin.Top) + 200;

thick.Bottom = lbl2.Margin.Bottom;

ThicknessAnimation an3 = new ThicknessAnimation();

an3.Completed += new EventHandler(animation_Completed);

an3.Duration = TimeSpan.FromMilliseconds(701);

an3.To = thick;

lbl2.BeginAnimation(Button.MarginProperty, an3);





ودر پایان عرض کنم که اگه تفاوت wpf با winform فقط در رابط کاربر هم باشه به احتمال زیاد در یک پروژه چندین بار مورد نیازه مثلا جستجو و فیلتر کردن اطلاعات مثال زیر عکس یک listview هستش
134863

elec60
شنبه 14 شهریور 1394, 00:11 صبح
تکنولوژی WPF با Winform اصلا قابل مقایسه نیستن! فقط یه دیتابایندیگش به کل Winform میارزه! فقط بحث گرافیکش نیست! که البته همینم چیز کمی نیست. یه کوچولو با DependencyProperty و RoutedEvent ها کار کنین ببینین چقدر قدرتمند هستند!

aliramazani
جمعه 20 فروردین 1395, 18:45 عصر
من در winform برای اتصال به دیتابیس و عملیات روی اون از linq و stored prosidure استفاده میکردم. در wpf هم میشه به این روش کار کرد؟

elec60
سه شنبه 24 فروردین 1395, 12:45 عصر
من در winform برای اتصال به دیتابیس و عملیات روی اون از linq و stored prosidure استفاده میکردم. در wpf هم میشه به این روش کار کرد؟

بله ميشه و هيچ محدوديتي نسبت به وينفرم نداره