konto usunięte

Temat: WPF/MVVM i rysowanie wykresów

Witam,

Aktualnie piszę pewną aplikacje z wykorzystaniem wzorca MVVM i doszedłem do etapu w którym potrzebuję stworzyć własną kontrolkę rysującą wykresy. Nie miałem jeszcze okazji implementować eventów oraz rysowania z użyciem MVVM, więc pytanie do bardziej doświadczonych osób: czy wykorzystanie MVVM jest tutaj sensowne czy może lepiej postawić na code-behind?

Pozdrawiam
Maciej Koprowski

Maciej Koprowski Programista /
Konsultant

Temat: WPF/MVVM i rysowanie wykresów

Damian K.:
Witam,

Aktualnie piszę pewną aplikacje z wykorzystaniem wzorca MVVM i doszedłem do etapu w którym potrzebuję stworzyć własną kontrolkę rysującą wykresy. Nie miałem jeszcze okazji implementować eventów oraz rysowania z użyciem MVVM, więc pytanie do bardziej doświadczonych osób: czy wykorzystanie MVVM jest tutaj sensowne czy może lepiej postawić na code-behind?

Pozdrawiam
Tak zupelnie bez wchodzenia w szczegoly sadze, ze Windows Interactivity moglby Ci pomoc i zalatwic ta kwestie
Pozdrawiam
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: WPF/MVVM i rysowanie wykresów

Damian K.:
Witam,

Aktualnie piszę pewną aplikacje z wykorzystaniem wzorca MVVM i doszedłem do etapu w którym potrzebuję stworzyć własną kontrolkę rysującą wykresy. Nie miałem jeszcze okazji implementować eventów oraz rysowania z użyciem MVVM, więc pytanie do bardziej doświadczonych osób: czy wykorzystanie MVVM jest tutaj sensowne czy może lepiej postawić na code-behind?

Pozdrawiam
Hej,

Sensowne jest, bo nauczysz się MVVM. Rozumiem, że to jest Twoim celem?

konto usunięte

Temat: WPF/MVVM i rysowanie wykresów

Sławomir Orłowski:

Hej,

Sensowne jest, bo nauczysz się MVVM. Rozumiem, że to jest Twoim celem?

Tak, moim pośrednim celem jest nauka MVVM, ale ponieważ miałem już okazję się przekonać jak skomplikowane potrafią być proste rzeczy w MVVM(np. event closing(), zamknięcie okna przyciskiem) zacząłem się zastanawiać czy MVVM się nadaje do tego typu zadań.
Maciej Koprowski:

Tak zupelnie bez wchodzenia w szczegoly sadze, ze Windows Interactivity moglby Ci pomoc i zalatwic ta kwestie
Pozdrawiam

Windows Interactivity powinien więc rozwiązać problemy z bindingiem zdarzeń. Początkowo rozważałem użycie MVVM Light Toolkit i EventToCommand, ale ponieważ reszta projektu została napisana bez żadnego frameworka, to jednak zrezygnowalem z tego pomysłu.

Pozdrawiam.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: WPF/MVVM i rysowanie wykresów

Tworzenie własnych kontrolek z użyciem MVVM to dobry kierunek. Przemawiają za tym takie same argumenty jak przy stosowaniu MVVM w aplikacjach. Przede wszystkim będzie ci łatwiej dokonywać zmiany w kontrolkach.

Na początku, jeśli chcesz się dobrze nauczyć MVVM odradzam stosowanie gotowych frameworków.
Zachęcam pracę u podstaw, aby dobrze opanować mechanizmy WPF, a dopiero później użycie jakiegoś frameworka, który ułatwia życie.

Dzięki temu będziesz wiedział co w trawie piszczy.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: WPF/MVVM i rysowanie wykresów

Damian K.:
Sławomir Orłowski:

Hej,

Sensowne jest, bo nauczysz się MVVM. Rozumiem, że to jest Twoim celem?

Tak, moim pośrednim celem jest nauka MVVM, ale ponieważ miałem już okazję się przekonać jak skomplikowane potrafią być proste rzeczy w MVVM(np. event closing(), zamknięcie okna przyciskiem) zacząłem się zastanawiać czy MVVM się nadaje do tego typu zadań.
MVVM nadaje się do budowy GUI, prawie każdego GUI :) Twoim założeniem projektowym jest użycie MVVM, więc się trzymaj tego. W niektórych aspektach będziesz miał różne "ficzery" prawie za darmo (w porównaniu do innych wzorców), a gdzieś się trochę narobisz.
Ogromnym plusem jest użycie MVVM, ponieważ dużo osób/firm używających WPFa używa również MVVM. Będziesz miał doświadczenie.

konto usunięte

Temat: WPF/MVVM i rysowanie wykresów

Damian K.:
Witam,

Aktualnie piszę pewną aplikacje z wykorzystaniem wzorca MVVM i doszedłem do etapu w którym potrzebuję stworzyć własną kontrolkę rysującą wykresy. Nie miałem jeszcze okazji implementować eventów

Czy chcesz "rysować wykresy" z użyciem eventów ?
oraz rysowania z użyciem MVVM,

MVVM to wzorzec architektoniczny; opisuje pewną organizację kodu. Jak, w sposób bezpośredni, organizacja kodu ma się do "rysowania" ?
więc pytanie do bardziej doświadczonych osób: czy wykorzystanie MVVM jest tutaj sensowne czy może lepiej postawić na code-behind?

Biorąc pod uwagę to, że MVVM opisuje organizację kodu (również tego "behind"), mogę jedynie odpowiedzieć "tak" :)

konto usunięte

Temat: WPF/MVVM i rysowanie wykresów

Jakub Wojt:
Damian K.:
Witam,

Aktualnie piszę pewną aplikacje z wykorzystaniem wzorca MVVM i doszedłem do etapu w którym potrzebuję stworzyć własną kontrolkę rysującą wykresy. Nie miałem jeszcze okazji implementować eventów

Czy chcesz "rysować wykresy" z użyciem eventów ?
oraz rysowania z użyciem MVVM,

MVVM to wzorzec architektoniczny; opisuje pewną organizację kodu. Jak, w sposób bezpośredni, organizacja kodu ma się do "rysowania" ?
więc pytanie do bardziej doświadczonych osób: czy wykorzystanie MVVM jest tutaj sensowne czy może lepiej postawić na code-behind?

Biorąc pod uwagę to, że MVVM opisuje organizację kodu (również tego "behind"), mogę jedynie odpowiedzieć "tak" :)

Wizualizacje, które potrzebuję zaimplementować są dość specyficzne (dlatego nie mogę użyć gotowej biblioteki) i będą wymagały interakcji z użytkownikiem, a także podstawowych operacji jak powiększanie, zaznaczanie itp., więc bez zdarzeń się nie obejdzie. Jak wspomniałem wcześniej, potrzebowałem kiedyś użyć zdarzenia zamykania okna oraz zamknięcia okna za pomocą przycisku(czego do dzisiaj nie udało mi się jeszcze wykonać) i to co w podejściu Code-Behind wymaga jednej linii kodu, w MVVM zajęło tych linii 100. Dlatego w sposób sceptyczny podszedłem do pomysłu użycia MVVM w kontrolce która wymaga wielu interakcji z użytkownikiem. W moim odczuciu takie 'sztuczne' zwiększanie objętości kodu, wprowadzanie niepotrzebnych powiązań pomiędzy klasami sprawia, że dobrodziejstwa jakie płyną z zastosowania architektury wielowarstwowej są tutaj znikome, w porównaniu z zaciemnieniem kodu jakie powodujemy. Moje wątpliwości zapewne spowodowane były brakiem znajomości odpowiednich mechanizmów jakie oferuje WPF i XAML :) Stąd też pytanie na forum, aby się upewnić, że to co chce robić na pewno ma sens. Dodam jeszcze, że lubię i podoba mi się wzorzec MVVM, nie wyobrażam sobie tworzyć aplikacji w WPF bez niego, ale akurat w tym przypadku zwątpiłem w jego słuszność.

Co do rysowania, może nieprecyzyjnie się wyraziłem. Widok do stworzenia wizualizacji potrzebuje kolekcji danych z ViewModel. W podejściu code-behind po prostu dodaje kolejne punkty, które mają być rysowane. W podejściu MVVM, to również wydaje się bardziej skomplikowane :)

Pozdrawiam.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: WPF/MVVM i rysowanie wykresów

Ależ można to zrobić całkiem prosto - Canvas można zbindować do kolekcji obiektów i będziesz miał wykres! Trzeba to tylko zrobić w odpowiedni sposób.

Robiłem coś takiego w moim projekcie - wizualizacja różnych obiektów wektorowych na podstawie danych z bazy danych (spatial types).

konto usunięte

Temat: WPF/MVVM i rysowanie wykresów

To co chcesz zrobić jest łatwiej zrobić za pomocą wzorca MVVM niż pisać w code-behind. Aby rysować obiekty na ekranie możesz wykorzystać ItemsControl np.
<!-- XAML - View --!>
<Canvas Height="200" Width="200" HorizontalAlignment="Center"
VerticalAlignment="Center">
<ItemsControl ItemsSource="{Binding Path=ItemsOfCanvas}" />
</Canvas>
// C# - ViewModel
using System.Collections.ObjectModel;
public ObservableCollection<UIElement> ItemsOfCanvas{ get; set; }

Dzięki takiej składni możesz dobierać się do eventów dla każdego elementu na płótnie.
Jeżeli dalej chcesz tworzyć w code-behind to przeczytaj książkę Practical WPF Charts and Graphics autorstwa Jack Xu.

Następna dyskusja:

WPF, MVVM i EF - Databindin...




Wyślij zaproszenie do