W MVVMCROSS wymagane warunki i powiązane nie mają bezpośrednio zastosowania, ponieważ są w rdzeniu ASP.NET. Jednak zrozumienie ich roli w rdzeniu ASP.NET może pomóc wyjaśnić, w jaki sposób podobne pojęcia można zastosować w MVVMCROSS.
ASP.NET Context
- Wymagane atrybut: Ten atrybut zapewnia, że właściwość nie jest zerowa lub pusta po wystąpieniu wiązania modelu. Służy przede wszystkim do celów walidacji, zapewniając, że obowiązkowe pola są wypełniane formularzami lub scenariuszami wprowadzania danych [1] [3] [6].
- BindRequiredAttribute: Ten atrybut zapewnia, że właściwość jest obecna w danych przychodzących podczas wiązania modelu. W przeciwieństwie do wymaganego, sprawdza obecność właściwości w danych żądania, a nie tylko jej zerowalność [1] [3] [4].
Mvvmcross Context
W MVVMCROSS nacisk kładziony jest na wiązanie danych między widokiem a viewModel. Framework nie wykorzystuje bezpośrednio wymaganych lub wiązanych atrybutów. Zamiast tego opiera się na trybach wiązania, takich jak Oneway lub Twoway do zarządzania synchronizacją danych między widokiem a ViewModel [2] [7].
- Tryby wiązania w MVVMCROSS:
- One Way: Dane przepływają z ViewModel do widoku.
- Twoway: Dane przepływają w obie strony między widokiem a ViewModel. Jest to tryb domyślny dla niestandardowych powiązań w MVVMCROSS [7].
Aby osiągnąć podobną funkcjonalność do wymaganej lub powiązanej z MVVMCROSS, zazwyczaj zaimplementujesz logikę sprawdzania poprawności w ViewModel lub użyć niestandardowych powiązań, aby upewnić się, że niektóre właściwości są poprawnie aktualizowane. Na przykład możesz użyć inotifyPropertyChanged, aby powiadomić widok zmian w ViewModel, zapewniając, że dane są zawsze aktualne [2] [8].
Wdrażanie sprawdzania poprawności w Mvvmcross
Chociaż MVVMCROSS nie obsługuje bezpośrednio wymaganego ani niezbędnego, możesz zaimplementować sprawdzanie poprawności, sprawdzając wartości zerowe lub puste w właściwościach viewModel. Można to zrobić ręcznie lub za pomocą ram sprawdzania poprawności, które integrują się z MVVMCROSS.
Streszczenie
Podsumowując, choć wymagane i powiązane są specyficzne dla ASP.NET Core w celu zapewnienia obecności danych i walidacji, MVVMCROSS opiera się na swoich mechanizmach wiązania i niestandardowej logice sprawdzania poprawności w celu zarządzania integralnością danych. Jeśli potrzebujesz upewnienia się, że niektóre dane są obecne lub poprawne w MVVMCROSS, zazwyczaj zaimplementujesz tę logikę w ViewModel lub poprzez niestandardowe powiązania.
Cytaty:[1] https://blog.dominikasikorka.pl/required-vs-bindrequired/
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://dotnettuorials.net/lesson/bindnever-and--bindrequired-attribute-in-asp-no-core-mvc/
[4] https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-no-core-mvc/
[5] https://www.mvvmcross.com/documentation/plugins/methodbinding
[6] https://towardsdev.com/mastering-the-use-of-requiredtribute-a-detailed-comparison-of-required-vs-bindrequired-b3feaf108Ef5
[7] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-used-in-a-project
[8] https://www.mvvmcross.com/documentation/advanced/custom-data-binding