Czy podczas tworzenia nowego GUI WPF jest preferowanym wyborem w stosunku do formularzy Windows? [zamknięte]

Większość ograniczeń i sztuczek z formularzami windows jest wspólna dla większości programistów. Ale od. NET 3.0 dostępny jest również WPF, Windows Presentation Foundation. Mówi się, że można zrobić "seksowne aplikacje" łatwiej z nim i z. NET 3.5 SP1 dostał dobry wzrost prędkości Na wykonanie.

Ale z drugiej strony wiele rzeczy działa inaczej z WPF. Nie powiem, że jest to trudniejsze, ale trzeba nauczyć się "wszystkiego" od zera.

Moje pytanie: czy to warto poświęcić ten dodatkowy czas, gdy trzeba stworzyć nowy GUI i nie ma presji czasu na projekt?

Author: Matt Hamilton, 2008-09-12

30 answers

WPF pozwala Ci robić niesamowite rzeczy, a ja to uwielbiam... ale zawsze czuję się zobowiązany do zakwalifikowania moich rekomendacji, za każdym razem, gdy deweloperzy pytają mnie, czy uważam, że powinni przejść do nowej technologii.

Czy twoi programiści są skłonni (preferowani, chętni) poświęcić czas potrzebny do nauczenia się efektywnego korzystania z WPF? Nigdy bym nie pomyślał, aby powiedzieć to o MFC, lub Windows Forms, lub nawet niezarządzanego DirectX, ale prawdopodobnie nie chcesz zespół próbuje "podnieść" WPF nad kurs normalnego dev. cykl na produkt wysyłkowy!

Czy przynajmniej jeden lub dwóch Twoich programistów ma wrażliwość projektową i czy osoby z ostatecznym autorytetem projektowym mają przyzwoite zrozumienie problemów związanych z rozwojem, więc możesz wykorzystać możliwości WPF, aby stworzyć coś, co jest rzeczywiście lepsze, zamiast po prostu bardziej "kolorowe", z darmową animacją?

Czy pewien procent docelowej bazy klientów działa na zintegrowanych zestawach układów graficznych, które mogą nie obsługa funkcji, które planowałeś - czy nadal działają w systemie Windows 2000, co całkowicie wyeliminowałoby ich jako klientów? Niektórzy ludzie pytają również, czy twoi klienci rzeczywiście dbają o ulepszone wizualizacje, ale po przeżyciu wewnętrznej firmy "nasi klienci biznesowi nie dbają o kolory i obrazy" debaty na początku lat 90., wiem, że dobrze zaprojektowane rozwiązania od konkurencji sprawią, że będą dbać, a prawdziwe pytanie brzmi, czy warunki są odpowiednie, aby zapewnić lepszą jakość obrazu. / align = "left" /

Czy projekt zakłada rozwój podstaw, przynajmniej dla warstwy prezentacji, aby uniknąć dodatkowej złożoności próby podłączenia do niekompatybilnego rusztowania (Interap z formularzami Win nie jest bezproblemowy)?

Czy twój menedżer może zaakceptować (lub być rozproszony od zauważenia) znaczny spadek wydajności deweloperów przez cztery do sześciu miesięcy?

Ten ostatni numer jest spowodowany tym, co lubię myśleć jako "FizzBin" charakter WPF, z dziesięciu różnych sposobów realizacji każdego zadania, i nie ma wyraźnego powodu, aby preferować jedno podejście do drugiego, i niewiele dostępnych wskazówek, które pomogą Ci dokonać wyboru. Nie tylko niedociągnięcia jakiegokolwiek wyboru staną się jasne dopiero znacznie później w projekcie, ale masz praktycznie gwarancję, że każdy deweloper w swoim projekcie przyjmie inne podejście, co spowoduje poważny ból głowy w utrzymaniu. Najbardziej frustrujące są niespójności, które ciągle podrywasz się, próbując nauczyć się ram.

Więcej szczegółowych informacji związanych z WPF można znaleźć we wpisie na moim blogu:

Http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

 72
Author: AndyL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 18:22:01

Po trzech miesiącach próbowania rozwalić aplikację line-of-business (LOB) na WPF, doszedłem do punktu rozważenia powrotu do Windows Forms dla mojego projektu i badając opinie innych ludzi, natknąłem się na ten wątek...

Tak, WPF jest genialną technologią i ma zalety, które wykraczają daleko poza zwykłe cukierki... możliwości tworzenia szablonów i wiązania są świetnymi przykładami. Cały model obiektowy oferuje większą elastyczność i szersze możliwości. Że nie czyni go jednak platformą defacto dla przyszłych aplikacji LOB.

" problemy", które WPF rozwiązuje w kategoriach oddzielenia GUI od logiki biznesowej, nie są problemami, których nie można łatwo rozwiązać w Windows Forms, po prostu zaczynając od odpowiedniej architektury i nastawienia. Nawet możliwości wiązania obiekt-ścieżka WPF mogą być powielane w formularzach Windows za pomocą bardzo prostych klas pomocniczych. Możliwości szablonów danych WPF są bardzo ładne, ale znowu nie są niczym, co nie można symulować w Windows Forms w tych rzadkich przypadkach, gdy absolutnie nie wiesz dokładnie, jakie obiekty zamierzasz reprezentować w danej części ekranu.

Gdzie Windows Forms jest pod względem dojrzałości. Nie możesz machnąć martwym kotem w Google, nie trafiając na jakiegoś bloga, na którym ktoś rozwiązał dla Ciebie problem z Windows Forms. Z drugiej strony WPF ma stosunkowo mniej dostępnych zasobów do nauki, mniej niestandardowych kontroli i nie ma tak wielu problemy z ząbkowaniem rozwiązane.

U szczytu podejmowania decyzji WPF vs Windows Forms musi być dojrzałość środowiska programistycznego. Edytory formularzy Windows są sprawne, responsywne i intuicyjne. Informacje zwrotne o błędach docierają do ciebie natychmiast, rozwiązania są zwykle oczywiste, a cykl kompilacji->debugowania->edycji w Windows Forms jest bardzo szybki.

Aplikacje WPF, z drugiej strony, mają stosunkowo żałosne wsparcie czasu projektowania, z widokiem projektu wszystko-zbyt gotowy do stchórzył przy pierwszym napotkaniu błędu, często wymagającego zbudowania projektu po poprawce, zanim projektant będzie gotów ponownie zacząć. Przeciąganie i upuszczanie komponentów z zestawu narzędzi może równie dobrze nie być obsługiwane, biorąc pod uwagę szeroki zakres okoliczności, w których albo w ogóle nie działa, albo daje zupełnie nieintuicyjne wyniki. Pomimo obietnicy wpftoolkit, nadal nie ma użytecznego DataGrid dla WPF, który zapewnia jakąkolwiek rozsądną wydajność lub przyjazność czasu projektowania.

Debugowanie aplikacji WPF jest trochę podobne do starego ASP.NET paradygmat debugowania... hit f5 - > wait - > launch - > error - > stop - > fix - > hit F5 - > wait - > launch - > error - > groan - > stop - > fix - > hit F5.... Wszystkie XAML uruchomione przez twój program są zablokowane, a śledzenie specyficznych problemów z XAML jest często żmudne.

Najważniejsze jest to, że narzędzia programistyczne dla formularzy Windows będą Cię front-endy w ułamku czasu aplikacji WPF... szczególnie Jeśli tworzysz siatki główne lub arkusze kalkulacyjne, takie jak interfejsy, które mają większość LOB. W Windows Forms zaczynasz od 90% już wykonanej pracy.

Jestem wielkim fanem architektury WPF. Chciałbym tylko, aby zestaw narzędzi do projektowania czasu nie wyglądał jak pre-alpha debug-build.


Edit: ta odpowiedź została opublikowana o. net 3.5 + Visual Studio 2008, ale. NET 4.0 z Visual Studio 2010 statki z siatką danych WPF. Chociaż wprowadzono wiele ulepszeń w nowym środowisku programistycznym WPF, moja odpowiedź pozostaje niezmieniona i chciałbym dodać następującą sugestię:

Jeśli jesteś w pośpiechu, aby zrobić RAD rozwój, przejdź z Windows Forms. Jeśli chcesz stworzyć dobrze zaprojektowaną, łatwą do utrzymania, skalowalną, zasobową, wielozadaniową aplikację biznesową, rozważ ASP.NET MVC + HTML 5 + jQuery... Moje projekty z tymi technologiami mają zaowocowało to lepszymi wynikami, szybciej, dla moich klientów. MVC oferuje wszystkie te same szablony, co WPF, a jQuery umożliwia animacje i złożone interakcje. Co ważniejsze, ASP.NET rozwiązanie MVC + jQuery nie wymaga, aby użytkownicy końcowi mieli nowoczesne pulpity z przyzwoitym sprzętem graficznym.

 148
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 20:14:06

Jestem siedem miesięcy w użyciu WPF na tym, co stało się teraz podstawowym systemem dla mojego klienta, i chciałbym podzielić się z Tobą kilkoma przemyśleniami na temat doświadczenia uczenia się i korzystania z WPF jako platformy prezentacji biznesowej.

Ogólnie rzecz biorąc, komentarze, które przedstawiłem powyżej, nadal się trzymają... Wsparcie czasu projektowania dla WPF jeszcze nie jest tutaj. Jeśli spieszysz się, aby uzyskać aplikację rich-client, skorzystaj z formularzy Windows. Kropka. Microsoft nie spieszy się z przerwaniem Platforma GDI / Windows Forms, dzięki czemu możesz liczyć na dobre wsparcie przez uczciwy czas w przyszłości.

WPF nie jest łatwe do opanowania, ale to nie powinno być miejsce, w którym zostawiasz swoją decyzję o tym, czy inwestować swój czas i energię w naukę WPF. Pomimo obecnego braku dojrzałości, WPF jest zbudowany wokół niektórych użytecznych, nowoczesnych koncepcji.

Na przykład w WPF inwestycja w dobrze napisane obiekty biznesowe z dźwiękową logiką walidacji jest solidną inwestycją. W przeciwieństwie do Windows Forms, powiązanie danych WPF jest pełne funkcji, które pozwalają kontrolkom interfejsu reagować na nieprawidłowe dane wejściowe użytkownika bez pisania kodu GUI w celu wykrycia tych błędów. To jest cenne.

Możliwości stylizacji i szablonów w WPF okazały się również cenne. Pomimo błędnego przekonania, że jedynym zastosowaniem do stylizacji i szablonów jest tworzenie cukierków na ekranie, prawda jest taka, że funkcje te znacznie upraszczają kodowanie interfejsu użytkownika co daje bogate sprzężenie zwrotne-takie przyciski, które wyłączają / włączają się w oparciu o stan podstawowej warstwy logiki biznesowej, lub podpowiedzi, które inteligentnie odnajdują swój tekst na podstawie stanu obiektu pod kursorem,itp.

To wszystko składa się na niezwykle cenne funkcje dla" nic fantazyjnego " aplikacji biznesowych , po prostu dlatego, że ułatwiają utrzymanie interfejsu zgodnego z podstawowymi danymi.

W skrócie:

  • W Windows Forms you design your user interfejsu, a następnie napisz kod na dysk ten interfejs użytkownika, który ogólnie zawiera również kod do kierowania Twoim obiekty danych.
  • w WPF inwestujesz w warstwę biznesową, która napędza twoje obiekty danych, a następnie projektujesz interfejs, który nasłuchuje do Twoich obiektów danych.

To pozornie subtelna różnica, ale to ogromna różnica w Twojej zdolności do ponownego użycia kodu... co nasuwa pytanie: "Czy pytanie Windows Forms vs WPF faktycznie jest decyzja inwestycyjna?"

(to chyba mój ulubiony wątek.)

 84
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 20:20:43

Czy są jakieś istotne powody, aby używać WPF

Absolutnie! WPF jest absolutnie niesamowite! Będzie to duża korzyść dla praktycznie każdego projektu, ponieważ ma tak wiele funkcji i możliwości, których brakuje w Windows Forms.

Dla aplikacji biznesowych największe wygrane będą:

  • fantastyczne wiązanie danych i szablony robią największą różnicę. Po stworzeniu przyzwoitego modelu danych wystarczy kilka kliknięć, aby utworzyć szablon danych i użyć Expression Blend aby skonfigurować dokładny wygląd obiektu za pomocą funkcji przeciągnij i upuść. A wiązanie z kolorem czy kształtem jest banalne.
  • układ ekranu jest niezwykle elastyczny. Nie tylko wszystko w WPF może płynnie dostosowywać się do zmian rozmiaru i kształtu kontenera, ale przedmioty mogą być trywialnie powiększane i obracane, a nawet rozciągać się poza ramę zawierającą.
  • zwykłe obiekty mogą być prezentowane w dowolny sposób, mogą łatwo mieć różne prezentacje w różnych ekrany, mogą udostępniać prezentację i mogą dostosowywać swoją prezentację do zmian wartości danych.
  • Jeśli chcesz wydrukować, renderowanie do drukarki jest trywialne. Odpowiednio skonfigurowany WPF sprawia, że Crystal Reports lub SQL Server Reporting Services (SSRS) wyglądają jak dziecięca zabawka.
  • twój interfejs użytkownika będzie wyglądać i czuć się znacznie bardziej dynamiczny, w tym ładne funkcje, takie jak przyciski, które animują, gdy mijasz mysz nad nimi.

Do narzędzi i gier, inne zalety przychodzą na pierwszy plan:

  • możesz łatwo dodawać kształty, linie i dowolne rysunki do aplikacji bez użycia zewnętrznego edytora. Każdy z nich może być związany z danymi i animowany lub kontrolowany przez kod. W Windows Forms zwykle wystarczy zaimportować bitmapę i używać jej tak, jak jest, chyba że chcesz dużo pracować.,
  • animacje są fajne! Użytkownicy będą pod wrażeniem, o ile nie przesadzisz. Mogą również pomóc ludziom zobaczyć, co jest dzieje się i zmniejszyć potrzebę hilighting. Na przykład podczas przeciągania obiektu można animować obiekt docelowy, aby pokazać, co się stanie, jeśli go upuścisz.
  • kolory, wypełnienia gradientowe, pędzle, fantazyjne czcionki, obracanie dowolnych obiektów, pędzle płytek itp. Wszystko, co chcesz graficznie, jest Twoje dla zapytania.
  • Niewiarygodnie konfigurowalny. Musiałem narysować tory kolejowe dla jednej aplikacji, żebym mógł zrzucić na nie pociąg. Kilka godzin później miałem tory kolejowe, które mogłem narysować wszędzie. na ekranie za pomocą krzywych Béziera, a następnie połączy się i przełącza automatycznie.

Najważniejsze jest to, że każdy interfejs graficzny o znacznej wielkości, który można zbudować w Windows Forms, można zbudować w WPF w jedną trzecią wysiłku (lub mniej) i wyglądać znacznie lepiej.

Czy WPF wymaga większej ilości zasobów (w szczególności pamięci RAM)

Płacisz cenę w porównaniu do Windows Forms, ale jest ona niewielka.

  • RAM może iść w górę lub w dół w zależności od wdrożenie. WPF przechowuje swoje dane bardziej efektywnie, więc poszczególne obiekty są mniejsze, ale w WPF jest zwykle więcej obiektów niż w Windows Forms, więc równoważy się to i każdy z nich może wyjść przed siebie.
  • procesor pójdzie w górę w porównaniu do formularzy Windows. Z mojego doświadczenia wynika, że rzeczywista aktualizacja obiektów WPF na ekranie zajmuje około dwa razy więcej procesora niż normalne renderowanie Windows Forms. Jeśli aplikacja spędza większość czasu na aktualizacji ekranu, WPF może nie być dla Ciebie. Ale w takim razie jesteś prawdopodobnie nie używa też Windows Forms: najpoważniejsze gry są pisane bezpośrednio do DirectX .
  • użycie dysku będzie nieco mniejsze dla WPF, ponieważ zajmuje o wiele mniej kodu niż Windows Forms. Dane będą oczywiście tej samej wielkości.

Jeszcze jedna uwaga o wykorzystaniu procesora: animacje i transformacje (ruch, Tłumaczenie, itp.) jest w rzeczywistości bardziej wydajny na WPF niż w Windows Forms ze względu na jego Przechowywanie w trybie zatrzymanym. Jest to początkowe uzyskanie obiektów w górę tam jest wolniej.

Koszty utrzymania

WPF to ogromne zwycięstwo nad Windows Forms, jeśli chodzi o konserwację. Ponieważ wszystko odbywa się w 1/5 tyle kodu, co wcześniej, jest 1/5 tyle do utrzymania. Poza tym wszystkie rzeczy z boilerplate zniknęły, więc możesz skupić się na kodzie, który faktycznie wykonuje pracę.

Korzyści z XAML

XAML jest rdzeniem WPF. Chociaż WPF może być używany bez XAML, XAML sprawia, że jest niezwykle łatwy do użyj. XAML ma zdolność HTML do łatwego określenia interfejsu użytkownika, ale jego wbudowane znaczniki są znacznie potężniejsze i można łatwo zdefiniować własne. (W rzeczywistości jest to normalne).

Niektóre szczególne zalety XAML:

  • cały interfejs użytkownika jest zdefiniowany w pliku tekstowym, który jest łatwy do odczytania i manipulowania, zarówno dla użytkowników, jak i narzędzi]}
  • znaczniki umożliwiają określenie wiązań w jasny i prosty sposób
  • konwertery typu pozwalają właściwościom o typach złożonych na być łatwo określone. Na przykład, można powiedzieć Brush= "Green" lub można określić pędzel promieniowy gradient z trzema stopniami.
  • możesz tworzyć własne elementy
  • możesz łatwo wykorzystać potężne "dołączone właściwości" WPF

Inne spostrzeżenia

Marzyłem o czymś takim jak WPF przez wiele lat. Wiele osób wdrożyło części tej funkcjonalności, ale aby uzyskać to wszystko w jednym miejscu i w takiej cenie ($0) jest niesamowite.

WPF to ogromny zmiana paradygmatu z Windows Forms i zajmie trochę przyzwyczajenia się, ale czas spędzony na nauce zwróci się wielokrotnie.

WPF nadal ma kilka brodawek nawet pięć lat później, ale jego moc całkowicie cię zdmuchnie, gdy go doświadczysz. Jeśli ktoś spróbuje przeciągnąć cię z powrotem do formularzy Windows, będziesz tylko kopać i krzyczeć.

Porady: - Czy otrzymać kopię Expression Blend do rozwoju - Od czasu do czasu ręcznie edytować XAML - Nie poddawaj się, gdy wydaje się to dziwne w pierwszy

 74
Author: Ray Burns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 20:31:37

WPF wymaga Windows Vista lub Windows XP SP2, który nie jest uciążliwym wymogiem, ale jest odpowiedni. Jeśli chcesz uruchomić w systemie Windows 2000 (co niektórzy nadal robią), WPF nie będzie działać dla Ciebie.

WPF jest również nowszą technologią i nie tak sprawdzoną jak Windows Forms, więc możesz wybrać Windows Forms jako mniej ryzykowną opcję, szczególnie w przypadku większych aplikacji.

To powiedziawszy, tak WPF jest przyszłością. Visual Studio 2010 jest przepisywany w WPF, który będzie prawdopodobnie będzie to największa aplikacja WPF do tej pory i będzie to również prawdziwy test dla tej technologii.

Oczywiście starsze aplikacje Windows Forms byłyby inną sytuacją, w której jest to właściwy wybór.

 62
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:44:49

Jak mówili inni, są zalety i wady tak czy siak tutaj idziesz. Zalety WPF, jak powiedzieli inni, obejmują:

  • Możliwość tworzenia bardzo bogatych interfejsów użytkownika względnie łatwo.
  • łatwiejsza animacja i efekty specjalne
  • nieodłączna skalowalność (użyj narzędzia Lupa systemu Windows Vista w aplikacji WPF i w aplikacji Windows Forms: zauważ, że w aplikacji WPF wszystkie grafiki wektorowe są pięknie skalowane)
  • (OPINIA) I Poczuj, że" łatwiej " jest robić systemy zorientowane na dokumenty w WPF

Są jednak wady WPF, gdzie Windows Forms wychodzi na wierzch:

  • pakiet kontrolny WPF jest znacznie bardziej ograniczony niż pakiet Windows Forms.
  • istnieje większe wsparcie dla zewnętrznej przestrzeni kontrolnej dla formularzy Windows. (To się zmienia, oczywiście, ale pomyśl o tym: Windows Forms istnieje od 2001 roku; WPF zaledwie kilka lat. Z korzyścią dla czasu, Windows Forms ma większe wsparcie w społeczności.)
  • większość programistów zna już Windows Forms; WPF zapewnia nową krzywą uczenia się

Na koniec pamiętaj, że możesz tworzyć świetne, atrakcyjne i angażujące interfejsy użytkownika w dowolnym narzędziu, jeśli wykonujesz pracę (lub korzystasz z odpowiednich narzędzi innych firm). Na koniec dnia, ani nie jest lepiej w każdych okolicznościach. Wykorzystaj to, co jest właściwe dla projektu.

 51
Author: John Rudy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:43:13

Model programowania WPF jest bardziej otwarty i elastyczny niż Windows Forms, ale jak ASP.NET MVC, wymaga nieco większej dyscypliny w zakresie poprawnego implementowania wzorców Model-View-ViewModel.

Mój pierwszy LOB aplikacja z WPF skończyła się kompletną porażką, ponieważ był to hog zasobów, który przyniósł moje laptopy bardzo niskiej klasy szlifowanie do końca... i to było ostatecznie dlatego, że właśnie WPF + LINQ do SQL i oczekiwałem dobrego wynik... i tu WPF tak silnie odbiega od form Windows... W formularzach Windows można tego rodzaju rzeczy ujść na sucho. WPF jest znacznie cięższy na zasoby niż Windows Forms, a jeśli nie zaprojektujesz swojej aplikacji tak, aby była szczupła, skończysz z 800-funtowym gorylem.

Nie unikaj WPF... zbadaj to. Należy jednak pamiętać, że dopuszczalne grzechy kodowania Windows Forms nie przyniosą dobrych wyników w WPF. Są to zasadniczo różne silniki, które nadają się do zasadniczo różne wzorce kodowania.

Ostatnie słowo: jeśli nie chcesz korzystać z WPF, dobrze uzyskaj dostęp do wirtualizacji danych do użytku z listami i siatkami. Co to jest prosty listitem związany z danymi lub GridCell kończy się potężnym logicznym + wizualnym obiektem-grafem w WPF, a jeśli nie nauczysz się wirtualizacji, aplikacja nie będzie działać dobrze na dużych zbiorach danych.

 24
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 20:16:45

Jest bardzo stroma krzywa uczenia się do WPF, i polecam najpierw dostać oczywiste książki (Adam Nathan , Sells / Griffiths , oraz Chris Anderson ) i blogi ( Josh Smith , itp.). Po prostu bądź na to przygotowany i upewnij się, że twój projekt daje Ci czas na naukę WPF.

Oprócz nauki technologii, poświęć trochę czasu na poznanie wzorców używanych do konstruowania aplikacji WPF. Model View ViewModel (MVVM) wydaje się być tym, który zyskał dużą akceptację.

Osobiście uważam, że WPF jest tego wart, ale bądź uprzedzony. Należy również pamiętać, że skutecznie ograniczasz użytkowników do Windows XP SP2 + i Windows Vista. Podjęliśmy tę decyzję, ale możesz mieć inne wymagania.

 18
Author: denis phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:36:03

Obie technologie mają swoje plusy i minusy. W dużej aplikacji z "klasycznym" interfejsem używałbym Windows Forms. W aplikacji, która wymaga bogatego interfejsu użytkownika (Skórki, animacje, zmiana interfejsu użytkownika) wybrałbym WPF. Sprawdź Artykuł WPF VS. Windows Forms porównanie form WPF i Windows.

 18
Author: Oleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:47:07

Oprócz elastyczności w projektowaniu interfejsu użytkownika, istnieją pewne zalety techniczne WPF:

1.) WPF nie opiera się na obiektach GDI. Cóż, myślę, że używa 2 obiektów GDI dla instancji samego okna, ale to praktycznie nic. Byłem zaangażowany w pewnym stopniu w bardzo dużej wewnętrznej aplikacji Windows Forms. Ludzie w naszym biurze czasami uruchamiają 3 lub 4 instancje tego jednocześnie. Problem polega na tym, że często trafiają na obiekt GDI 10.000 limit związany z Windows 2000, XP i Vista. Gdy tak się stanie, cały system operacyjny przestanie reagować i zaczniesz widzieć artefakty wizualne. Jedynym sposobem, aby to wyczyścić, jest zamknięcie aplikacji w dół.

2.) WPF wykorzystuje GPU. zdolność WPF do odciążenia części przetwarzania interfejsu użytkownika do GPU jest genialna. Oczekuję tylko, że ten aspekt będzie lepszy z czasem. Jako były hobbysta programowania OpenGL mogę docenić moc, która pochodzi z GPU. To znaczy, mój Karta graficzna $100 ma rdzenie 112 działające w 1.5 GHz każdy (i to nie jest w żaden sposób na szczycie linii). Ten rodzaj mocy przetwarzania równoległego może zawstydzić każdy czterordzeniowy procesor.

Jednak WPF jest wciąż całkiem nowy. Nie będzie działać w systemie Windows 2000. W rzeczywistości aplikacja WPF może uruchamiać się powoli po świeżym restarcie. O tym wszystkim opowiadam na moim blogu: http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

 15
Author: Steve Wortham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-23 19:53:42

Myślę, że warto nauczyć się WPF. Gdy jesteś na bieżąco, praca nad formularzami jest znacznie łatwiejsza IMHO. Nie martwiłbym się tak bardzo o "seksowne" rzeczy. Większość z tego to tylko moda. Możesz tworzyć "normalne" aplikacje w stylu Winforms bardzo szybko i łatwo w WPF.

Cała koncepcja nadaje się do łatwiejszego projektowania IMO.

 14
Author: GEOCHET,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 23:40:17

Nie zgadzam się z niektórymi odpowiedziami tutaj. WPF doskonale nadaje się do aplikacji linii biznesowej (LOB). (Klient frog design LOB jest najlepszym przykładem). Poza wszystkimi możliwościami, aby twój interfejs użytkownika był eye candy (co nie jest konieczne w aplikacjach biznesowych), WPF oferuje znacznie więcej dla Ciebie.

Funkcje wiązania danych i szablonów są lepsze niż Windows Forms. Oferuje również znacznie lepszy sposób oddzielania kodu od prezentacji. Mamy z powodzeniem stosowany WPF dla aplikacji 2 LOB w zespołach z nie więcej niż 2-3 programistami.

Największym problemem jest prawdopodobnie stroma krzywa uczenia się WPF (w porównaniu do Windows Forms), która zmniejszy szybkość rozwoju z deweloperami nie przyzwyczajonymi do WPF.

 13
Author: Joachim Kerschbaumer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 09:34:40

Aktualnie przepisujemy naszą aplikację w WPF z Windows Forms. Tak, jest stroma krzywa uczenia się i musisz" nauczyć się na nowo " niektórych rzeczy, ale to jest tego warte. W połączeniu z WCF okazuje się, że piszemy mniej kodu, szybciej i bardziej niezawodnie niż kiedykolwiek wcześniej.

Trzymaj się go przez chwilę, przeczytaj książkę Adama Nathana i sprawdź stale rosnącą bibliotekę kontrolek innych firm, takich jak te zTelerik iComponentOne . Jeden negatyw, w moim zdaniem narzędzie do projektowania, Expression Blend , jest bardzo niewygodne w użyciu. Najnowsza wersja jest nadal w fazie beta, ale nie wydaje się to właściwe dla tych z nas, którzy korzystali z Visual Studio od lat. Tak, jest głównie dla projektantów, ale niektórych rzeczy po prostu nie można zrobić w Visual Studio.

 11
Author: ScottG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-29 19:26:04

Rozważ WPF, jeśli projektowanie interfejsu jest dla Ciebie ważne, ponieważ WPF może zapewnić lepsze wrażenia z interfejsu. Ale Windows Forms ma po swojej stronie lata ewolucji, więc udowodniono, że działa i można znaleźć wielu doświadczonych programistów dla tej platformy.

Również przenośność może być problemem, WPF działa tylko z Windows XP SP2 i nowszymi.

Ponadto WPF ma stromą krzywą uczenia się, co oznacza, że nie jest łatwo dostarczyć wysokiej jakości produkt bez konkretnego doświadczenia WPF.

 9
Author: David Lay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:48:21

Cóż, jedna odpowiedź brzmi "kiedy musisz obsługiwać 1.1 lub 2.0", ponieważ WPF jest częścią. NET 3.0. Istnieją znane ograniczenia systemu operacyjnego dla WPF i jest oczywisty problem z umiejętnościami: jeśli masz zespół programistów, którzy znają winforms, może być łatwiej znaleźć solidny kod z winforms. Jeśli jednak piszesz dużo kodu UI, prawdopodobnie warto zacząć w pewnym momencie podnosić WPF.

WPF również ma wiele wspólnego z Silverlight, więc ma zbywalne korzyści.

 8
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 12:24:12

WPF ma wiele zalet, takich jak doskonałe funkcje wiązania danych, rozdzielenie trosk, rozdzielenie konstrukcji i logiki itp...

Jako programista Lubię możliwość definiowania interfejsu użytkownika za pomocą XAML, a nie przywiązany do projektanta Windows Forms i czuję się dobrze wiedząc, że mogę liczyć na innego projektanta, aby moja aplikacja wyglądała dobrze.

Osobiście nie obchodzi mnie, że starsze wersje Windows nie są obsługiwane, ale jednym z dużych problemów z WPF jest to, że nie jest (obecnie/kiedykolwiek) obsługiwane by Mono (http://www.mono-project.com ) więc aplikacje WPF nie będą działać na Mac OS lub Linux. (Na przykład aplikacje Silverlight).

Jeśli masz czas i zasoby, aby zainwestować w naukę WPF, zrób to! Nawet jeśli zamierzasz pisać aplikacje Silverlight obsługujące wiele systemów operacyjnych.

Jeśli potrzebujesz aplikacji desktopowych do uruchamiania na wielu systemach operacyjnych z SWF.

 8
Author: TimothyP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 13:42:43

Istnieje wiele różnic. Kochamy WPF za:

  1. deklaratywny styl programowania.
  2. animacje i przejścia stanu
  3. Expression Blend to świetne narzędzie
  4. dobra obsługa stylu.

Jednak utknęliśmy z formularzami Windows, ponieważ:

  1. dodatkowy czas potrzebny na programista do nauki WPF, gdy znasz już Windows Forms.
  2. WPF nie będzie działać w systemie Windows 2000 lub niżej.
 7
Author: amcoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:41:26

Największą kwestią przy podejmowaniu decyzji, którego z nich użyć, jest zastanowienie się, jaki. NET Framework zainstalowali Twoi odbiorcy docelowi. Uważam, że więcej osób ma niższe wersje. NET Framework, które obsługują tylko formularze Windows, ale to tylko moje osobiste doświadczenie.

 6
Author: Jon Tackabury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:38:43

Zaletą WPF jest to, że znacznie łatwiej jest tworzyć ładnie wyglądające GUI za pomocą niestandardowych kontrolek i animacji. WPF pomaga również w dalszym serparate warstwy prezentacji i logiki. Jeśli masz projektantów, to pozwala na farm 95% tej pracy do nie-koderów i pozwala programistom pracować nad logiką. Wadami są koszty oprogramowania dla Expressions Blend i brak jakichkolwiek narzędzi do profilowania kodu Visual Studio, które działają dobrze, ponieważ mają tendencję do łapania się w ramach wywołuje próbę renderowania XAML. Jestem pewien, że są inne, ale tylko te dwie naprawdę widzieliśmy.

Główną kwestią jest to, czy chcesz wymagać, aby Twoi klienci musieli zainstalować. NET 3.0 lub nawet lepiej. NET 3.5 SP1. Otrzymasz kilka niegatywnych opinii

 5
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-24 20:44:57

WPF znacznie ułatwia przekazanie prac projektowych form faktycznemu projektantowi, a nie deweloperowi w projektowanej odzieży. Jeśli to jest coś, co chciałbyś zrobić, WPF jest twoją odpowiedzią. Jeśli Klasyczne przyciski w stylu Windows są w porządku, to Windows Forms jest prawdopodobnie najlepszym rozwiązaniem.

(wiele odpowiedzi twierdzi, że powinieneś używać WPF, jeśli projekt interfejsu jest "ważny dla ciebie", ale to dość niejasne. Projektowanie interfejsu jest zawsze "ważne".)

 5
Author: Jonathan Beerhalter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:49:50

Jeśli posiadasz licencję MSDN, sprawdź Expression tools . Jest zaprojektowany bezpośrednio dla WPF, eksportuje bezpośrednio do Visual Studio i może pomóc ułatwić przejście.

 4
Author: Rob Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 19:37:23

Jeśli zależy Ci tylko na obsłudze systemu Windows i nie przeszkadza ci czas potrzebny na nauczenie się go, skorzystaj z WPF. Jest szybki, elastyczny, łatwy do ponownego Skin i ma świetne narzędzia do pracy z nim.

 3
Author: Cody Brocious,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 23:35:19

Jako bonus poboczny, Silverlight opiera się na WPF i zaczynając od jednego z nich pozwala zdobyć wiedzę na temat pracy z drugim. Jeśli sprawy nadal będą działać w Internecie, posiadanie wcześniejszej wiedzy (i biblioteki istniejącego kodu) w celu łatwego przeniesienia do przeglądarki (lub Windows Live Mesh) może pomóc w zapewnieniu oprogramowania dodatkowego życia.

 3
Author: Nidonocu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 10:11:26

Jeśli zdecydujesz się na WPF, biorąc pod uwagę plusy i minusy już wyjaśnione w powyższych odpowiedziach, Gorąco polecam przejście przez ten odcinek dnrTV z Billy Hollis

 3
Author: Vin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 20:21:11

W DotNetRocks odcinek 315 , Brian Noyes omawia to obszernie.

 3
Author: Jim Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-03 16:56:37

Jest znany problem z renderowaniem tekstu w WPF. Wielu użytkowników zgłasza, że intensywne stosowanie antyaliasingu i mieszania pikseli powoduje rozmycie tekstu. Jest to w niektórych okolicznościach wielki przełom i, o ile mi wiadomo, został uznany przez Microsoft na pewnym poziomie.

 3
Author: Icabod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-23 01:29:20

Od 3,5 roku zajmuję się tworzeniem formularzy Windows (w dwóch firmach). Obie aplikacje były szeroko używane i kończyły się problemami z GDI. Duże Aplikacje Windows Forms w końcu zabraknie zasobów GDI-powodując, że użytkownik końcowy będzie musiał ponownie uruchomić komputer.

 3
Author: DeveloperAlex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 20:32:20

Scott skarży się na Expression Blend i to, że nie ma to sensu dla niego jako dewelopera. Moja pierwsza reakcja na Expression Blend była taka. Jednak teraz widzę to jako nieocenione narzędzie, ale naprawdę zależy od tego, jakiego typu programistą jesteś.

Jestem programistą interfejsu użytkownika, który musiał pełnić rolę integratora i ostatecznie uznałem Expression Blend za nieoceniony do tworzenia stylów i sterowania szablonami w sposób WYSIWYG. Prawie zawsze mam Expression Blend i Visual Studio pracują nad tym samym projektem w tym samym czasie.

Myślę również, że zabawa w Expression Blend i przyjrzenie się XAML, który się wypluwa, jest doskonałym sposobem na nauczenie się API WPF ... podobnie jak korzystanie z designera w Windows Forms i sprawdzanie kodu C#, który wypluwa, jest pomocne w nauce korzystania z tego, co tam projektujesz.

Mieszanka wyrażeń jest pomocna. Po prostu spróbuj, zwłaszcza jeśli pracujesz na wizualizacjach aplikacji.

 2
Author: cplotts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-29 19:29:46

Cytat z wcześniejszego postu z Mark:

  • W Windows Forms projektujesz swój interfejs użytkownika, a następnie piszesz kod do napędu tego interfejsu użytkownika, który zazwyczaj zawiera również kod do napędu obiektów danych.
  • w WPF inwestujesz w warstwę biznesową, która obsługuje obiekty danych, a następnie projektujesz interfejs, który nasłuchuje obiektów danych.

Twierdzę, że jest to bardziej Wybór projektu, niż to, czy jesteś korzystanie z Windows Forms lub WPF. Doceniam jednak, że niektóre technologie mogą być lepiej dostosowane do konkretnego podejścia.

 2
Author: user218981,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:35

Tylko jeśli nie masz wiedzy WPF i nie chcesz w nią inwestować:)

 1
Author: akjoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-15 06:51:46