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.