Od dłuższego czasu utknąłem w tworzeniu Windows Forms (zacząłem od VB6 i kontynuowałem do C # .NET 4.5) i prawie osiągnąłem granicę możliwości Windows Forms, oba używając czystego .NET i efekty specjalne w kodzie natywnym.
Próbowałem nauczyć się WPF i XAML, ale utknąłem w nowym projektancie WPF. Naprawdę wydaje się bardzo trudny w użyciu w porównaniu z projektantem Windows Forms.
Chcę wiedzieć, czy istnieją alternatywy dla projektanta WPF platformy .NET, które są bardziej odpowiednie dla programistów Windows Forms?
Odpowiedzi:
Lubię blogować o artykułach dla początkujących w WPF, a jest kilka, które mogą Ci w szczególności pomóc:
Podsumowując, największą różnicą między Winforms i WPF jest to, że w WPF warstwa danych (the
DataContext
) jest twoją aplikacją, podczas gdy w WinForms twoją aplikacją jest warstwa UI.Aby spojrzeć na to w inny sposób, za pomocą WPF aplikacja składa się z tworzonych obiektów i używasz szablonów i innych obiektów interfejsu użytkownika, aby poinformować WPF, jak narysować składniki aplikacji.
To przeciwieństwo WinForms, w których 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ą projektowane w kodzie, a projektant jest potrzebny tylko do narysowania przyjaznego dla użytkownika interfejsu, który odzwierciedla klasy danych (zwykle
Models
iViewModels
)Osobiście wolę ręcznie wypisywać cały mój kod XAML, ponieważ jest szybszy i nie powoduje tak dużego bałaganu, jak robi to projektant WPF typu przeciągnij / upuść, chociaż czasami używam Projektanta, aby wyświetlić podgląd mojego interfejsu użytkownika lubić.
Tak więc, aby odpowiedzieć na pytanie, czy istnieją inni projektanci WPF odpowiedni dla programistów WinForms, proponuję, aby zamiast szukać innego projektanta, zamiast tego dowiedz się, jak używać WPF w sposób, w jaki ma być używany. Używanie WPF tak, jak to jest WinForms, oznacza, że tracisz wiele z tego, co czyni go tak wspaniałym :)
źródło
Chociaż niektórzy się nie zgadzają, odradzałbym również korzystanie z projektanta VS. Przynajmniej nie tworzyć interfejsu. Jeśli chcesz uzyskać pierwsze wrażenie na temat swojej implementacji bez uruchamiania aplikacji, jest to dobra przeglądarka, przynajmniej tak długo, jak nie są używane żadne zaawansowane rzeczy, takie jak
Styles
iTemplates
. Ale IMHO, jego wynik przeciągnij i upuść powinien być używany tylko jako prototyp i dlatego należy go wyrzucić, gdy nie jest już potrzebny.Oto kilka ważnych dla mnie powodów, aby go nie używać.
Projektant VS pracuje z poprawionymi marginesami i wyrównaniami (co zwykle nie jest konieczne, jeśli używasz elementów sterujących układu), co oznacza, że musisz dotykać wielu kontrolek, jeśli zmieniają się wymagania. Jeśli jesteś głęboko w XAML i mechanice WPF, możesz stworzyć aplikacje, które można modyfikować przy niewielkim wysiłku, pod względem wyglądu i stylu.
Ponieważ projektant generuje xaml, kompozycja nie jest optymalna, a interfejs użytkownika może działać źle. Nie zmierzyłem tego, to tylko uczucie.
Dużo lepszą alternatywą jest MS Blend , chociaż początek jest inny, ale łatwy. Jego wynik przeciągania i upuszczania jest znacznie lepszy niż wynik projektanta VS.
Ale jest to dość potężne narzędzie, które pomaga używać całkiem potężnych elementów do tworzenia najnowocześniejszego interfejsu użytkownika. Polecam odwiedzić przynajmniej krótki warsztat, aby poznać jego możliwości.
Wracając do pytania, IMHO i myślę, że wiele osób się z tym zgadza, kup sobie dobrą książkę, np. WPF Unleashed i 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ą niektóre typowe problemy. Nie ma więc potrzeby odkrywania na nowo koła.
źródło
Wiem, że to stare pytanie, ale z korzyścią dla każdego, kto na to patrzy, myślę, że powinienem trochę przywrócić równowagę - czytając niektóre inne odpowiedzi, mam wrażenie, że niektóre z `` nie używaj projektanta „sentyment pochodzi z niewłaściwego korzystania z niego. Ten samouczek jest całkiem dobry, abyś mógł zacząć i odpowiada na niektóre uwagi krytyczne w innych postach.
Na przykład możesz przełączyć się z układu opartego na marginesach podobnego do Winforms, który jest domyślny po upuszczeniu kontrolki, do stylu bardziej WPF, klikając prawym przyciskiem myszy i wybierając opcję „Resetuj układ”
Ten film podobny wątek.
Nadal wolę projektanta VS2010 w równowadze - VS2013 wydaje się być nieco błędny podczas przeciągania i upuszczania na TabItems **, (którego mój obecny projekt dużo używa) - ale widok konspektu dokumentu VS2013 pozwala również przenosić rzeczy w tym widoku , co może być prawdziwym plusem.
Jednak naprawdę, aby w pełni wykorzystać możliwości WPF i xaml, musisz biegle posługiwać się zarówno widokiem projektanta, jak i widokiem xaml oraz przełączać się między nimi; jeśli unikasz projektanta, tracisz coś, co może ci bardzo pomóc.
** Edycja - chociaż wydaje się, że zostało to poprawione w Update 3 dla VS 2013 oraz w podglądzie VS14, do tej pory czasami mam dziwne zachowanie.
źródło
Przede wszystkim w WPF (XAML) w programie Visual Studio należy zawsze używać kodu XAML do tworzenia interfejsu użytkownika i nie przeciągać i upuszczać kontrolki! Musisz utrzymywać swój kod w czystości. Możesz użyć Expression Blend, aby ci pomóc, jest bardziej zorientowany na grafikę dzięki przeciąganiu i upuszczaniu, ale nie jest darmowy.
To nie jest wielka krzywa uczenia się, ale myślę, że powinieneś nauczyć się robić swój Xaml ręcznie, zamiast szukać alternatywy.
źródło
Przeszedłem przez ten proces, tak jak ty. Później 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.
To sprawia, że tworzenie interfejsu użytkownika jest zabawne. Zwłaszcza, gdy dowiesz się, jak lubi bawić się procesami Asyc. To naprawdę usuwa wiele bólów głowy spowodowanych przez WinForms.
źródło