MVVMCross hanterar språkfiluppdateringar med en gång bindning på ett specifikt sätt, särskilt när du hanterar statisk text från språkfiler. Här är en detaljerad förklaring av hur detta fungerar:
Översikt över engångsbindning i MVVMCross
Engångsbindning i MVVMCross är ett bindande läge som överför värden från ViewModel till vyn. Denna överföring sker endast när den bindande källan är inställd och den övervakar inte aktivt ändrar meddelanden eller händelser från ViewModel. När den första överföringen är klar utför bindningen inga uppdateringar om inte själva bindningskällan återställs [1].
Hantera språkfiluppdateringar
När du använder en engångsbindning för språkfiler ställer MVVMCross vanligtvis texten en gång när språket är valt. Detta beror på att det är vanligt att användare väljer ett språk i början av applikationen, och det är ovanligt att de ofta ändrar det. Men om språket måste uppdateras dynamiskt är engångsbindning ensam inte tillräckligt, eftersom det inte automatiskt uppdaterar texten när språket ändras.
Dynamiska språkuppdateringar
För att hantera dynamiska språkuppdateringar skulle du vanligtvis behöva implementera ytterligare logik. Detta kan innebära återställning av bindningskällan när språket ändras eller använder ett annat bindningsläge som stöder uppdateringar, till exempel tvåvägsbindning, även om detta är mindre vanligt för statisk text.
med MVVMCross.plugin.ResxLocalization
För att hantera språkfiler tillhandahåller MVVMCross plugin "MVVMCross.plugin.ResxLocalization", vilket gör att du kan lagra strängar i ".Resx" -filer för olika språk. Detta plugin hjälper till att hantera lokala strängar och kan integreras med applikationens IOC -behållare för att ge tillgång till lokala resurser från ViewModels och Views [4].
För att uppdatera språket dynamiskt med detta plugin, skulle du behöva implementera logik som uppdaterar användargränssnittet när språket ändras. Detta kan involvera manuellt uppdatering av textegenskaperna för UI -element eller med hjälp av en mer dynamisk bindande strategi som reagerar på språkförändringar.
Slutsats
Medan engångsbindning är lämplig för att ställa in statisk text från språkfiler initialt, kräver hantering av dynamiska språkuppdateringar ytterligare implementeringssteg. MVVMCross tillhandahåller verktyg som Plugin "ResxLocalization" för att hantera lokala resurser, men du måste implementera logiken för att uppdatera UI när språket ändras.
Sammanfattningsvis är MVVMCross engångsbindning inte utformad för att automatiskt hantera språkuppdateringar, men med rätt ytterligare logik och plugins kan du uppnå dynamiskt språkstöd i din applikation.
Citeringar:[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-release/
[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/jsonlocalization
[8] https://www.mvvmcross.com/documentation/fundamentals/linking
[9] https://www.mvvmcross.com/blog/