Zobacz wyniki ankiety na temat zarobków programistów w Polsce. Czytaj więcej..
9

4

Pytanie dość luźne i ogólne, jednak może uzyskam interesujące odpowiedzi.

Od "zawsze" pisałem aplikacje pod Windows w C#, korzystając z Windows Forms. Ostatnio bacznie zacząłem się przyglądać WPF. Ciężko jednak podejść poważnie do sprawy dysponując tylko VS. Lubię na początek podeprzeć się teorią. Rzuciłem okiem na XAMLa, widzę dodatkowe możliwośći jakie daje WPF.

Jaką przewagę ma WPF nad Windows Forms? Czy polecilibyście przesiadkę? Czy WPF to przyszłość, czy może pozostać wiernym starym dobrym WF? Chętnie wysłucham argumentów entuzjastów i sceptyków XAMLa i WPF.

Jeśli bawić się w WPF to od czego zacząć? Jaką lekturę polecacie? Blog, tutoriale, tradycyjna książka? Jak wyglądały Wasze początku z WPF?

flag

9 Answers

8

WPF to bardzo nowoczesna technologia i daje bardzo ciekawe narzędzia do kreacji wizualnej. Ostatnio przyszło mi stworzyć aplikację na kioski internetowe i wyszła doskonale - nie wiem czy coś podobnego dałbym radę zrobić w WF, a na pewno nie w tak krótkim czasie, włączając w to naukę od podstaw!

Dodatkowo, WPF świetnie rozdziela pracę programisty i projektanta UI - można naprawdę równolegle pracować nad tą samą aplikacją nie przeszkadzając sobie. Co więcej, większość elementów (obiekty UI, animacje, zdarzenia, style) można tworzyć do wyboru: w kodzie, albo w XAML. To daje możliwość wyboru sposobu rozwiązania problemu.

Ważne jest również to, że przy okazji poznajemy środowisko do tworzenia aplikacji Silverlight, więc zysk jest podwójny.

Korzystałem m.in. z :

Najważniejsze to na początek poznać jak tworzyć układ strony: czyli czym się różnią i do czego służą podstawowe kontenery takie jak Grid, Canvas, Border, etc. Potem już idzie z górki :)

link|flag
Argument Silverlight'owy dość interesujący :) Faktycznie mamy tutaj pośrednio 2w1, Silverlight powoli zdobywa popularność a XAML to XAML - czy w WPF czy w Silverlight. Cenny głos :) – andrzejp Apr 27 at 20:53
1 
Można jeszcze dodać Windows Mobile 7 - tu już będzie tylko XAML. I tak myślę, że docelowo MS chce całe windows przenieść na to, wtedy mogą wywalić stare Win32 i ... np. skorzystać z kernela linuxa ;-) – twk Apr 27 at 21:03
6

Mówiąc krótko warto zaczac uczyc sie WPFa. MS zrobil bardzo ladny i wygodny wraper programistyczny na directx, dzieki czemu kazdy z programistow moze czerpac z mozliwosci "rysowania" (nie w pelni oczywiscie, na to na co zezwala API) na maszynach z Windows. Oczywiscie to wymaga troche lepszej karty niz 3dfx :) ale bez przesady.

Zaleta WPFa jest to ze jest on niezalezny od naszego ustawienia DPI w komputerze, to znaczy ze na moim DPI bedzie tak samo wygladala aplikacja jak na innym, WPF zadba o to by konwersja odbyla sie plynnie dzieki wlasnemu systemowi - oczywiscie przycisk na innym DPI moze wygladac inaczej ale proporcje zostana zachowane a to jest dosc wazne. W WinForms naprawde sie z tym mozna bylo nameczyc i nie uzyskac odpowiedniego wyniku.

Swojego czasu napisalem krotki post Zapomnijcie o Windows Forms gdzie na prostym przykladzie pokazuje jak mozna zaaoszczedzic czas pisania rozwiazania pomiedzy WinForms a WPF.

Ogolnie ja jestem z WPF bardzo zadowolony, moge zrobic po stronie UI wiecej niz bym potrafil lub chcial zrobic za pomoca WinForms. Dodatkowo w WinForms jest ciezko rozdzielic prace pomiedzy grafikiem a programista, co w WPF i wraz z MVVM jest dosc proste. Takze coraz wiecej materialow na temat WPFa pojawia sie w sieci wiec napewno jest coraz latwiej sie go uczyc.

Ja osobiscie jestem wtrakcie czytania Pro WPF in C# 2008, ktora @Damian polecil, ja jej nie polecam. Zreszta jak tylko przebrne do konca to napewno udostepnie swoja opinie na blogu. Ksiazka jest super jezeli nigdy sie zbytnio nie programowalo, nigdy sie nie czytalo na temat WPFa a tym bardziej na temat MVVM. To czego ja tam szukalem to wiedzy Pro, chcialem sie dowiedziec dokladnie jak cos dziala i dlaczego tak dziala i jak to mozna wykorzystac. Niestety rozdzialy na ktore liczylem daly mi skapa informacje plus tak jakby autor nawet nie zauwazyl ze to cos moze byc inaczej wykorzystane i sila danej funkcjonalnosci nie lezy w tym co on stwierdzil ze opisze bo jest dostepne w API, ale to co mozna z tym zrobic - przyklad Command. Ogolnie jest to przeglad przez technologie WPF dla poczatkujacych (mimo ze ma nazwe Pro), ktorzy raczej nie szukaja potem innych rozwiazan tylko siadaja i pisza zgodnie z ksiazka - przy takim podejsciu WPF nie ma sensu ;)

Dodatkowo tak jak SL, WPF ma wsparcie Blenda dzieki czemu jak chcesz stworzyc fajna aplikacje wizualnie to masz do tego pelne narzedzia, jezeli nie, to piszesz wszystko w XAMLu, ktorego szczerze mowiac polecam sie nauczyc. Jak dla mnie w Visual Studio to jest najlepsza i naszybsza metoda tworzenia UI, w Blend jest duzo prosciej zrobic UI z poziomu projektowania (nie wiem czemu, ale jakies takie mam odczucia).

Co do materialow, ciezko mnie skierowac Cie na jakies poczatkujace, ja zaczynalem nauke od analizy i zrozumienia Prisma, potem zaczalem duzo czytac na temat MVVM i nastepne kroki to bylo ogladanie kodu aplikacji w roznych implementacjach MVVM, co tak naprawde nauczylo mnie jak mozna fajnie pisac aplikacje ale nie jak wykorzystywac w pelni WPF. Tutaj sie raczej poruszalem metoda: potrzebuje cos zrobic, jak moge to zrobic? a jak moge lepiej to zrobic? wiec zanim doszedlem w Pro WPF do rodzialu na temat szablonow itp to wiedzialem odpowiednio duzo by stwierdzic ze ksiazka sie do niczego mi nie przyda :) Ale to wszytko zalezy od tego jak ty sie uczysz, ja lubie patrzec w czyjs kod i rozkminiac co jest grane i dlaczego tak. I takie podejscie stosowalem nie liczac Pro WPF, w WPF.

@Lukasz dal Ci dobre windowsclient.net, ja dodatkowo doloze:

Ja nie liczac google, glownie poprzez te strony znajdowalem ciekawe artykylu. Troche sie rozpisalem wiec koncze :)

link|flag
4

Ja uważam, że warto zaczynać.

WPF daje dość duże możliwości jeśli chodzi o stylowanie aplikacji i daje nowe podejście do tworzenia GUI. To in plus.

Na minus natomiast będzie narzut związany z większym zużyciem pamięci w aplikacjach WPFowych. No i oczywiście dochodzi nauka XAMLa :) WPF to nowa technologia tak więc trochę jeszcze błędów się w niej znajduje i czasem trzeba walczyć z nimi samemu :)

Z zasobów:

Dużo klientów jeszcze o tę technologię nie pyta, ale widać, że sporo pieniędzy w promocję jej idzie i kilka dużych projektów/produktów już w niej jest np. VS 2010, Expression, AutoCad.

link|flag
Dziękuję za odpowiedź. Przyjmując, że klientowi nie zależy na wyglądzie aplikacji - czy coś poza tym dostaję od WPF? Czy zrobię coś szybciej / sprawniej niż w WinForms? Oczywiście pytam w kontekście tego, czy klient dzięki temu dostanie coś szybciej a i ja będę miał "większe" moce przerobowe. Narzut pamięci - to gdzieś mi umknęło, doczytam. Dziękuję również za link do książki, cena przystępna, zapewne nabędę. – andrzejp Apr 27 at 20:29
2 
Dostajesz też dość mocny databinding, który powala powiązać dane z UI i w łatwy sposób dający aktualizowanie UI z danymi. – Paweł Łukasik Apr 27 at 21:14
3

Jaką przewagę ma WPF nad WF? Możesz zrobić taki graficzny interfejs jaki sobie tylko wymyślisz w rozsądnym przedziale czasu.

Ja osobiście zacząłem od książki Pro WPF in C# 2008. Teraz dostępna jest też zaktualizowana wersja 2010.

link|flag
Drugi głos, który podkreśla graficzną elastyczność. Czy tylko to? Przyjmując, że aplikacje jakie tworzę dla Windows to głownie listy danych (często z graficznymi wstawkami typu kolorowanie wierszy, ikony statusu itp. ) i formularze do ich edycji, menu kontekstowe, akcje na kliknięciu przycisków, czasem jakiś wykres - czy w WPF będzie mi to zrobić łatwiej? Wreszcie - czy WPF to postawienie wszystkiego co "znam" z Windows Forms na głowie i czy będę musiał od nowa wiele rzeczy przyswajać? – andrzejp Apr 27 at 20:35
Jeśli zależy Ci na bardzo efektownym wyglądzie aplikacji to śmiało sięgaj po WPF. Najlepiej będzie też jak znajdziesz na początek jakiś tutorial w Internecie i sprawdzisz samemu jak Ci się pracuje z WPF. – Damian Antonowicz Apr 27 at 20:41
3

Może to mało istotny drobiazg ale w WPF całkiem łatwo się drukuje. Małym nakładem pracy można uzyskać bardzo fajne efekty. Kolejny plus WPFa - bindowanie danych. Można połączyć praktycznie wszystko ze wszystkim, dodać jakiś konwerterek i wyświetlić co się chce i jak się chce. Żeby wyświetlić "jak się chce" przydają się te wszystkie efekty graficzne, o których była mowa wcześniej. Faktycznie, klientowi pewnie nie będzie robić różnicy, że aplikacja będzie bardziej kolorowa, będzie zawierać animacje i inne "wodotryski" ale np. ListView z produktami gdzie każdy element będzie zawierał zdjęcie, jakieś informacje i np. buttoniik który coś będzie robił z wybranym produktem robi różnicę. Pewnie w formsach można coś takiego zrobić ale WPF jest to banalnie proste i nie zajmuje dużo czasu.

Osobiście w formsach zbyt dużo nie programowałem, a WPFa dopiero się uczę rozwijając pewien projekt, jednakże z każdym kolejnym poznanym elementem coraz bardziej podoba mi się ta technologia.

link|flag
2

WPF to faktycznie przyszłość jeśli chodzi o aplikacjie okienkowe. Do edycji polecam Expression Blend. Edytor w Visual Studio mówiąc delikatnie jest słaby :)

W WPFie można wyczarować cuda, wystarczy tylko dobry pomysł. Aplikacjie można animować. Ogólnie super sprawa. Jedyna wada jest taka, że WPF nie będzie zaimplementowany w Mono...

link|flag
Trzeci głos i trzeci wspomina o grafice i cudach z nią związanych :) Jasne - tylko często dla klienta ważniejsza jest funkcjonalność niż grafika. Pytam bardziej w kontekście tego czy inwestycja w naukę WPF jest opłacalna, jeśli nie zbytniego "parcia" klienta na wygląd? Nie potrzebuje animowanych cudów itp. Z tego co napisały pierwsze 3 osoby wynika, że jeśli chcę super grafikę i elastyczność w tym temacie - myśleć o WPF. Co jednak jeśli to nie jest priorytetem? Wtedy warto? – andrzejp Apr 27 at 20:39
3 
Wg mnie nie. Jeżeli aplikacja ma działać a nie wyglądać i tylko takie aplikacje będą tworzone dla klientów to chyba nie warto zawracać sobie głowy WPFem. Jak dla mnie to WPF = super graficzny interfejs. Dodatkowych profitów nie zauważyłem. – Andrzej Stolarczyk Apr 27 at 20:42
Zgadzam się tutaj z Andrzejem. Jak nie zależy Ci na super wyglądzie aplikacji to będziesz się raczej męczyć z WPF :) – Damian Antonowicz Apr 27 at 20:44
WPF i AiR (Flash) w jednym stali domu ;) – dario-g Apr 27 at 20:45
1

WPF podobnie jak Silverlight bardzo ułatwia rozdzielenie aplikacji na warstwy. Wydzielając warstwę UI od reszty można w bardzo łatwy sposób testować tę "resztę"

link|flag
1

Moim zdaniem nauka WPF jest dobrym pomysłem, bo może stanowić wstęp do nauki Sliverlight'a.

Aplikacje desktopowe będą wymierać. A konieczność instalacji .NET frameworka u każdego nie zachęca do korzystania.

link|flag
1 
Ja nie wróże zamierania aplikacji desktopowych. Chociażby SL idzie tym kierunku dająć możliwość zainstalowania w trybie OOB. Co do instalowania czegokolwiek, to po pierwsze od tego są instalatory, po drugie .NET jest na większość maszyn preinstalowany a po trzecie SL też wymaga instalacji frameworka. – Paweł Łukasik May 3 at 11:31
1

Jesli robisz aplikacje standardowe, nawet zgodne z wytycznymi UX dlaVista/Win7 i jestes z nich teraz zadowolony, to Windows Forms wystarczy Ci w zupelnosci. WPF dzieki Commands i zupelnie innemu DataBinding (niz w WinForms) umozliwia po przyzwyczajeniu sie na wedlug mnie wygodniejsze tworzenie aplikacji.

Mity:

  • WPF nie wymaga super karty graficznej - Tier 2 nia ma az takich wymagan. A Tier 1 mozna osiagnac na kartach zintegrowanych (http://msdn.microsoft.com/en-us/library/ms742196.aspx).
  • WPF nie jest wraperem na DirectX jak np. Managed DirectX - faktycznie uzywa wewnetrzenie DX, ale jest to gleboko ukryte.
  • W WPF nie trzeba pisac aplikacji ktore "cool wygladaja", mozna pisac normalne aplikacje uzywajace kontrolek z normalnym wygladem
  • WPF daje separacje grafik/programista czy samo sie robi aplikacje wielowarstowe - tu tez mozna pobladzic i wyjsc kod spagetti, ale mozna pisac ladnie. Ani WF ani WPF nie wyprzedzaja nawzajem siebie pod tym wzgledem.

Zalety:

  • lepsza customizacja wygladu aplikacji, przy jednoczesnej spojnosci z themami systemowymi.
  • pewna "kaskadowosc" (jak z CSS) w definiuwaniu wygladu i redefiniowaniu jego
  • mozliwosc wymuszenia konkretnego theme bez wzgledu na aktualny system operacyjny (w roznorodnym srodowisku, doskladnie ten sam wyglad jest zaleta)
  • wygodniejsze tworzenie elementow interfejsu z prostych elementow jak linie, kstalty, pezle, itp (debugowanie tego w GDI+ jest ciezkie)

Wady:

  • zmiana filozofii (w znaczeniu przyzywczajen i sposobu) tworzenia apliakcji.
  • brak dziedzicznia wizualnego "kontrolek"
  • w porownaniu do WinForms mniejsza liczba gotowych (z pudelka) komponentow - poprawilo sie z .NET 4
  • do nauczenia koeljne specyficzne rzeczy dla WPF gdzie indziej nie wystapuja.

Uwagi:

  • co do skalowanie i DPI - to tez trzeba z tym uwazac - (rastrowe obrazki/ikonki czy wielkosci z pomieszanymi jednostkami)

Jak zaczac? Od konkretnej potrzeby aplikacji, probujac ja zrobic. Ja jestem na bardzo "za" WPF.

link|flag

Your Answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.