Az MVVMCross a nyelvfájl frissítéseit az egyszeri kötéssel egy meghatározott módon kezeli, különösen akkor, ha a nyelvi fájlok statikus szövegével foglalkozik. Íme egy részletes magyarázat arról, hogyan működik:
Az egyszeri kötés áttekintése az mvvmcross-ban
Az egyszeri kötés az MVVMCross-ban egy kötési mód, amely az értékeket a ViewModel-ből a nézetbe továbbítja. Ez a transzfer csak akkor fordul elő, ha a kötési forrás be van állítva, és nem figyeli aktívan az üzenetek vagy események megváltoztatását a ViewModelből. Miután a kezdeti átadás befejeződött, a kötés csak akkor hajt végre frissítéseket, ha maga a kötési forrás visszaállítja [1].
A nyelvi fájlok frissítései kezelése
Ha a nyelvi fájlok egyszeri kötését használja, az MVVMCross általában egyszer állítja be a szöveget, amikor a nyelv kiválasztása van. Ennek oka az, hogy gyakori, hogy a felhasználók az alkalmazás kezdetén kiválasztanak egy nyelvet, és ritka, hogy gyakran megváltoztatják. Ha azonban a nyelvet dinamikusan kell frissíteni, akkor az egyszeri kötés önmagában nem elegendő, mivel a nyelv megváltozásakor nem frissíti a szöveget.
Dinamikus nyelvfrissítések
A dinamikus nyelvfrissítések kezeléséhez általában további logikát kell végrehajtania. Ez magában foglalhatja a kötési forrás visszaállítását, ha a nyelv megváltozik, vagy egy másik kötési módot használ, amely támogatja a frissítéseket, például a kétirányú kötést, bár ez kevésbé gyakori a statikus szövegnél.
Az mvvmcross.plugin.resxlocalization használata
A nyelvi fájlok kezeléséhez az MVVMCross biztosítja a `mvvmcross.plugin.resxlocalization` plugin -t, amely lehetővé teszi a karakterláncok` .resx` fájlokban történő tárolását a különböző nyelvekhez. Ez a plugin segíti a lokalizált karakterláncok kezelését, és integrálható az alkalmazás NOB -tárolójába, hogy hozzáférést biztosítson a lokalizált erőforrásokhoz a ViewModels and Views -ből [4].
A nyelv dinamikus frissítéséhez ezzel a pluginnal be kell hajtania a logikát, amely frissíti a felhasználói felületet, amikor a nyelv megváltozik. Ez magában foglalhatja az UI elemek szöveges tulajdonságainak kézi frissítését vagy egy dinamikusabb kötési megközelítés alkalmazását, amely reagál a nyelvváltozásokra.
Következtetés
Míg az egyszeri kötés alkalmas a statikus szöveg nyelvi fájlokból történő beállítására, a dinamikus nyelvfrissítések kezelése további megvalósítási lépéseket igényel. Az MVVMCross olyan eszközöket biztosít, mint például a „Resxlocalization” plugin a lokalizált erőforrások kezelésére, de a logikát be kell hajtania a felhasználói felület frissítéséhez, amikor a nyelv megváltozik.
Összefoglalva: az MVVMCross egyszeri kötődését nem a nyelvfrissítések automatikus kezelésére tervezték, hanem a megfelelő kiegészítő logikával és beépülő modulokkal dinamikus nyelvi támogatást érhet el az alkalmazásban.
Idézetek:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[3] https://www.mvvmcross.com/mvvmcross-5-rease/
[4] https://mobileprogrammerblog.wordpress.com/2017/12/30/mvvm-cross-with-xamarin-platform-resx-localization/
[5] https://stackoverflow.com/questions/17156368/
[6] https://stackoverflow.com/questions/60311571/the-intended-purpose-of-mvvmcross-createBindingset
[7] https://www.mvvmcross.com/documentation/plugins/jsonlocalisation
[8] https://www.mvmcross.com/documentation/fundamentals/linking
[9] https://www.mvvmcross.com/blog/