Alternatywa dla WPF

0

Chciałem zapytać, czy jest równoważny odpowiednik dla WPF w C#?

0
zkubinski napisał(a):

Chciałem zapytać, czy jest równoważny odpowiednik dla WPF w C#?

A "równoważny odpowiednik" to znaczy co konkretnie?

2

Ale WPF już jest przecież w C#... :|

Jeśli chodzi o nowocześniejszy odpowiednik WPF to jest to Windows App SDK (wcześniej zwany "project reunion") - https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/ - używa WinUI3 i ma wsparcie dla Mica, Acrylic i innych nowych featerów windows 10 i windows 11 jak na przykład toast notifications, windows push notifications (WNS) w przeciwieństwie do WPF który potrzebował do tego różnych hacków i libek 3rd party lub nie były dostępne w ogóle. Wcześniej były one dostępne tylko w UWP które Microsoft uśmiercił. Wszystkie te platformy używają XAMLa (w nieco odmiennych dialektach).
Ale nie polecam go jeszcze używać - użycie włącznie z pierwszą kompilacją nie jest zbyt proste, ma nadal bardzo wiele błędów i jest wolniejszy bo napisany w C++/WinRT a C# jest tylko nakładką komunikującą się z nim. Nawet bindingi działają w ten sposób że wprowadzane wartości są każdorazowo marshallowane i wywoływane są funkcje natywnej libki.
Proponuję zostać na razie przy WPF.

Równoważnym w sensie równie często używanym odpowiednikiem WPF jest WinForms

0
obscurity napisał(a):

Ale WPF już jest przecież w C#... :|

Jeśli chodzi o nowocześniejszy odpowiednik WPF to jest to Windows App SDK (wcześniej zwany "project reunion") - https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/ - używa WinUI3 i ma wsparcie dla Mica, Acrylic i innych nowych featerów windows 10 i windows 11 jak na przykład toast notifications, windows push notifications (WNS) w przeciwieństwie do WPF który potrzebował do tego różnych hacków i libek 3rd party lub nie były dostępne w ogóle. Wcześniej były one dostępne tylko w UWP które Microsoft uśmiercił. Wszystkie te platformy używają XAMLa (w nieco odmiennych dialektach).
Ale nie polecam go jeszcze używać - użycie włącznie z pierwszą kompilacją nie jest zbyt proste, ma nadal bardzo wiele błędów i jest wolniejszy bo napisany w C++/WinRT a C# jest tylko nakładką komunikującą się z nim. Nawet bindingi działają w ten sposób że wprowadzane wartości są każdorazowo marshallowane i wywoływane są funkcje natywnej libki.
Proponuję zostać na razie przy WPF.

Równoważnym w sensie równie często używanym odpowiednikiem WPF jest WinForms

bardziej mi chodzi o odpowiednik, który używa XAML-a, poszukałem i zastanawiam się czy to nie jest MAUI ?

1
zkubinski napisał(a):

nie wiem co konkretnie, dlatego zadałem pytanie

Nie wiem czy masz 10 lat, czy tylko udajesz takiego - pytałem co masz na myśli pytając o "równoważny odpowiednik". Czyli albo powiedz czego Ci brakuje w WPF że szukasz czegoś innego; albo co Ci przeszkadza w WPF że potrzebujesz alternatywy.

0
zkubinski napisał(a):

bardziej mi chodzi o odpowiednik, który używa XAML-a, poszukałem i zastanawiam się czy to nie jest MAUI ?

no to napisałem - Windows App SDK jest aktualnie wspieranym i rozwijanym odpowiednikiem, używa XAMLa

MAUI to wieloplatformowy framework, używa pod spodem między innymi Windows App SDK w wersji na desktopa i rozwinięcia Xamarin.Forms w wersji na androida. Możesz używać MAUI ale będziesz miał tylko wycinek funkcjonalności - wspólny mianownik dla wszystkich platform pod spodem.
MAUI używaj raczej jeżeli głównym targetem są smartfony a desktop ma być tylko portem takiej aplikacji na desktopa, natomiast MAUI jest dużo lepiej moim zdaniem wspierany i jest znacznie popularniejszy od czystego WinUI - ma większe wsparcie społeczności i więcej tutoriali.
Aplikacja desktopowa napisana w MAUI nie będzie wyglądać natywnie tak jak inne windowsowe. Ale w sumie już od wielu lat aplikacje desktopowe nie mają za bardzo zunifikowanego wyglądu więc pewnie ci to nie robi różnicy.

Innym rozwiązaniem alternatywnym do MAUI jest np Platform UNO - podobnie jak MAUI używa pod spodem WPF lub WinUI3 do wyboru - ma dodatkowo wsparcie dla linuksa (przez skia-gtk) i macOS.

Idea jednego frameworka i wspólnej bazy kodu dla wszystkich platform jest zacna ale w rzeczywistości są za duże różnice między tymi platformami - np kwestia uprawnień i pytania o nich, a również kwestia wyglądu żeby aplikacje wyglądały natywnie i miały zachowanie i interfejs do którego użytkownik danej platformy jest przyzwyczajony. Do tego dochodzi testowanie na każdej platformie z osobna co zabiera najwięcej czasu. Ja preferuję mieć logikę w osobnej bibliotece a widoki implementować osobno dla każdej platformy z osobna poświęcając temu trochę więcej czasu. Nie potrzeba do tego żadnych wymyślnych frameworków i nie jest się ograniczonym, aplikacje wyglądają najlepiej jak tylko można bo nie są tylko bezmyślnym portem a jednocześnie część kodu i cała logika jest wspólna.

0

Jeżeli chodzi o Net Core, to innym wartym rozważenia jest Avalonia, jednak jest to biblioteka którą trzeba osobno doinstalować. Ma pliki XAML podobnie jak WPF, działa i na Windows i na Linux, na OSX też, chociaż ja nie sprawdzałem. Natomiast, jak szukasz czegoś do starego frameworka (czyli nie Core), ktory poza Windows istnienie tylko jako mono to tylko WinForms (bardzo stare, mniejsza elastycznosc ale w większości przypadków się nada) lub Gtk#, który w mono już jest a w Windows wystarczy doinstalować.

0

@zkubinski:

Zakładając, że odrzuca cie na kilometr jakiekolwiek przyjmowanie wiedzy, bo sądzę ze to jest motywem pytania, jedynym GUI w którym można bez zrozumienia zrobić MAŁE aplikacyjki jest Python + Tk

0

Maui branch linuxowy
https://github.com/jsuarezruiz/maui-linux
semigraficzny gui.cs
https://github.com/gui-cs/Terminal.Gui

A dla ludziów z działu C#, daremny wasz trud, chociaż może zaraz dostaniecie pytanie jak to w c# wielowątkowość działa bo w c++ juz to przerabialiśmy.
edit:
Odnosnie brancha linux maui

I don't have a lot of optimism about this project succeeding.

Dopóki papa microsft nie przeznaczy programistów pozostanie ciekawostką.

1 użytkowników online, w tym zalogowanych: 0, gości: 1