Przejście z formularzy Windows do WPF

Od dłuższego czasu utknąłem z tworzeniem Windows Forms (zaczęło się od VB6 i trwało aż do C#. Net 4.5), i prawie osiągnąłem limit tego, co Windows Forms może zrobić, zarówno używając czystego. NET, jak i efektów specjalnych z natywnym kodem.

Wiem, że WPF to przyszłość (na razie), A Windows Forms zwalnia stając się przestarzałą technologią.

Próbowałem nauczyć się WPF i XAML, ale utknąłem w nowym WPF designer...It naprawdę wydaje się bardzo trudny w użyciu w porównaniu do Windows Forms designer...oczywiście...to tylko krzywa uczenia się i w pewnym momencie planuję udać się na kurs, aby nauczyć się WPF prawidłowo.

W międzyczasie chciałbym się dowiedzieć, czy są jakieś alternatywy dla. NET ' s WPF designer, które są bardziej odpowiednie dla programistów Windows Forms?

Author: series0ne, 2013-03-28

5 answers

Lubię blogować o artykułach dla początkujących WPF, a jest kilka w szczególności, które mogą Ci pomóc:

Podsumowując, największą różnicą między Winforms a WPF jest to, że w WPF twoja Warstwa danych (DataContext) jest Twoją aplikacją, podczas gdy w Winforms twoja warstwa interfejsu użytkownika jest Twoje podanie.

Aby spojrzeć na to w inny sposób, z WPF Twoja aplikacja składa się z obiektów, które tworzysz, a Ty używasz szablonów i innych obiektów interfejsu użytkownika, aby powiedzieć WPF, jak rysować komponenty aplikacji.

To przeciwieństwo WinForms, gdzie tworzysz aplikację z obiektów interfejsu użytkownika, a następnie dostarczasz im potrzebne dane.

Z tego powodu projektant nie jest tak często używany, ponieważ komponenty aplikacji są zaprojektowany w kodzie, a projektant jest potrzebny tylko do narysowania przyjaznego dla użytkownika interfejsu, który odzwierciedla Twoje klasy danych (zazwyczaj Models i ViewModels)

I osobiście, wolę wpisać wszystkie moje XAML ręcznie, ponieważ jest szybszy i nie robi tyle bałaganu, co drag / drop WPF designer, chociaż używam projektanta przy okazji, aby wyświetlić podgląd, jak będzie wyglądał mój interfejs użytkownika.

Więc odpowiadając na twoje pytanie, czy są inni projektanci WPF odpowiedni dla programistów WinForms, sugerowałoby, że zamiast szukać innego projektanta, zamiast szukać, aby dowiedzieć się, jak używać WPF w sposób, w jaki ma być używany. Korzystanie z WPF jak z WinForms oznacza, że przegapisz wiele z tego, co sprawia, że jest tak wielki:)

 161
Author: Rachel,
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-02-08 14:40:22

Wiem, że to stare pytanie, ale z korzyścią dla wszystkich, którzy na to patrzą, myślę, że powinienem nieco poprawić równowagę - czytając niektóre z innych odpowiedzi, mam wrażenie, że niektóre z sentymentów "nie używaj projektanta" wynika z niewłaściwego korzystania z niego. ten tutorial jest całkiem dobry, aby zacząć i odpowiedzi na niektóre krytyki w innych postach.

Na przykład, możesz przełączyć się z układu opartego na marginesie Winforms, który jest domyślny, gdy po kliknięciu prawym przyciskiem myszy i wybraniu opcji "Resetuj układ"

Ten film obejmuje podobne podłoże.

Nadal wolę VS2010 designer na balansie-VS2013 wydaje się być nieco błędny podczas przeciągania i upuszczania na TabItems **, (którego mój obecny projekt używa wiele) - ale Widok zarysu dokumentu VS2013 pozwala przenosić rzeczy w tym widoku, co może być prawdziwym plusem.

Naprawdę, jednak, aby uzyskać jak najwięcej z WPF i xaml trzeba być w miarę płynnym zarówno w widoku projektanta, jak i w widoku xaml i przełączać się między nimi; jeśli unikasz projektanta, tracisz coś, co może ci bardzo pomóc.

* * Edit-chociaż wydaje się, że zostało to poprawione w aktualizacji 3 dla VS 2013, i w Zapowiedzi VS14, do tej pory nadal mam dziwne zachowanie czasami.

 9
Author: peterG,
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
2014-07-16 14:43:26

Cóż, chociaż niektórzy się nie zgadzają, Zalecam również, aby nie używać projektora VS. Przynajmniej nie do tworzenia interfejsu. Jeśli chcesz uzyskać pierwsze wrażenie na swojej implementacji bez uruchamiania aplikacji, jest to dobra przeglądarka przynajmniej tak długo, jak nie są używane skomplikowane rzeczy, takie jak Styles i Templates. Ale, IMHO, jego wynik przeciągnij i upuść powinien być używany tylko jako prototyp i dlatego być odrzucony, gdy nie jest już potrzebny.

Oto kilka powodów, dla których są dla mnie ważne, żeby tego nie używać.

  1. Projektant VS pracuje z ustalonymi marginesami i wyrównaniami (co zwykle nie jest konieczne, jeśli używasz kontrolek układu), co oznacza, że musisz dotknąć wielu kontrolek, jeśli wymagania zostaną zmienione. Jeśli jesteś głęboko w XAML i mechanice WPF, możesz stworzyć aplikacje, które można modyfikować przy niewielkim wysiłku, jeśli chodzi o wygląd i odczucie.

  2. Ponieważ projektant generuje xaml, kompozycja nie jest optymalny i interfejs użytkownika może działać źle. Nie zmierzyłem tego, to tylko przeczucie.

Znacznie lepszą alternatywą jest MS Blend , chociaż początek jest wszystkim innym, ale łatwym. Jego wynik przeciągnij i upuść jest znacznie lepszy niż wynik projektanta VS.
Ale jest to dość potężne narzędzie, które pomaga używać dość potężnych elementów do tworzenia state of the art UI. Polecam odwiedzić chociaż krótki warsztat, aby zorientować się w jego możliwości.

Wracając do twojego pytania, IMHO, i myślę, że wiele osób się zgadza, kup sobie dobrą książkę np. WPF Unleashed a później, jeśli chcesz dowiedzieć się więcej o szczegółach, WPF Pro. Istnieje wiele funkcji, które różnią się od Winforms. Nie poznasz ich używając żadnego projektanta. Myślę, że to najlepsze podejście.

Proszę również wziąć pod uwagę, że istnieje wiele frameworków i bibliotek (np. MVVM light, WPFToolkit ), które już rozwiązują typowe problemy. Więc nie jest konieczne odkrywanie koła na nowo.

 8
Author: DHN,
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
2013-10-16 09:31:23

Po pierwsze, w WPF (XAML) w Visual Studio deisgner, zawsze należy używać kodu xaml do budowania interfejsu użytkownika i nie przeciągać i upuszczać kontroli! Musisz zachować czysty kod. Możesz użyć Expression Blend, aby ci pomóc, jest bardziej zorientowany graficznie za pomocą przeciągania i upuszczania, ale nie jest darmowy.

To nie jest duża krzywa uczenia się, ale myślę, że powinieneś nauczyć się ręcznie robić xaml zamiast szukać alternatywy.

 7
Author: mlemay,
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
2013-03-28 12:39:51

Przeszedłem przez ten proces tak jak ty. Potem uczyłem wszystkich w mojej firmie WPF. Jest kilka ważnych lekcji, których się nauczyłem i wszyscy, których znam, którzy pracują z WPF.

  1. jeśli pracujesz z kontrolkami UI w kodzie za,.... Więc robisz to źle. Nie ma absolutnie potrzeby, aby radzić sobie z kontrolkami UI w kodzie za.
  2. nie potrzebujesz wizualnego programisty, aby go kliknąć. Jesteś o wiele bardziej produktywny tylko przez radzenie sobie z XAML. Użyj Kopiuj / Wklej. Nie ufaj swoim możliwościom pisania. To zaoszczędzi wiele bólów głowy.
  3. Pomyśl o XAML jak o oknie, które blokuje dane. W kodzie za Tobą są zmiany danych. W XAML definiujesz sposób interpretacji danych przez interfejs użytkownika. Konwertery są niesamowite. Jak tylko zdobędziesz kluczową Ilość konwerterów, twoja produktywność będzie wysoko. Przejmą rolę szalonej ilości kontroli, nawet tych, którzy ukrywają lub resize, czyli co z UI,

To sprawia, że tworzenie interfejsu jest zabawne. Zwłaszcza, gdy dowiesz się, jak lubi bawić się z procesami Asyc. To naprawdę usuwa wiele bólów głowy, które były spowodowane przez Winforms.

 7
Author: user853710,
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
2015-01-18 12:55:26