MVVMCross는 특히 언어 파일에서 정적 텍스트를 처리 할 때 특정 방식으로 일회성 바인딩을 사용하여 언어 파일 업데이트를 처리합니다. 다음은 이것이 어떻게 작동하는지에 대한 자세한 설명입니다.
MVVMCross의 일회성 바인딩 개요
MVVMCross에서 일회성 바인딩은 뷰 모델에서 뷰로 값을 전송하는 바인딩 모드입니다. 이 전송은 바인딩 소스가 설정된 경우에만 발생하며 뷰 모델에서 변경 메시지 또는 이벤트를 적극적으로 모니터링하지 않습니다. 초기 전송이 완료되면 바인딩 소스 자체가 재설정되지 않는 한 바인딩은 업데이트를 수행하지 않습니다 [1].
언어 파일 업데이트 처리
언어 파일에 일회성 바인딩을 사용할 때 MVVMCross는 일반적으로 언어를 선택할 때 텍스트를 한 번 설정합니다. 이는 사용자가 응용 프로그램 시작시 언어를 선택하는 것이 일반적이며 자주 변경하는 것은 드문 일이기 때문입니다. 그러나 언어를 동적으로 업데이트 해야하는 경우 언어가 변경 될 때 텍스트를 자동으로 업데이트하지 않기 때문에 일회성 바인딩만으로는 충분하지 않습니다.
동적 언어 업데이트
동적 언어 업데이트를 처리하려면 일반적으로 추가 논리를 구현해야합니다. 이는 언어가 변경 될 때 바인딩 소스를 재설정하거나 양방향 바인딩과 같은 업데이트를 지원하는 다른 바인딩 모드를 사용하는 것이 포함될 수 있지만, 이는 정적 텍스트의 경우 덜 일반적입니다.
mvvmcross.plugin.resxlocalization 사용
언어 파일을 관리하기 위해 MVVMCross는`mvvmcross.plugin.resxlocalization` 플러그인을 제공하므로 다양한 언어 용`.resx` 파일에 문자열을 저장할 수 있습니다. 이 플러그인은 현지 문자열을 관리하는 데 도움이되며 Application의 IOC 컨테이너와 통합되어 뷰 모델 및 뷰에서 현지화 된 리소스에 액세스 할 수 있습니다 [4].
이 플러그인으로 언어를 동적으로 업데이트하려면 언어가 변경 될 때 UI를 업데이트하는 논리를 구현해야합니다. 여기에는 UI 요소의 텍스트 속성을 수동으로 업데이트하거나 언어 변경에 반응하는보다 역동적 인 바인딩 접근법을 사용하는 것이 포함될 수 있습니다.
결론
일회성 바인딩은 처음에는 언어 파일에서 정적 텍스트를 설정하는 데 적합하지만 동적 언어 업데이트를 처리하려면 추가 구현 단계가 필요합니다. MVVMCross는 현지화 된 리소스를 관리하기위한`ResxLocalization '플러그인과 같은 도구를 제공하지만 언어가 변경 될 때 UI를 업데이트하려면 논리를 구현해야합니다.
요약하면 MVVMCross의 일회성 바인딩은 언어 업데이트를 자동으로 처리하도록 설계되지 않았지만 올바른 추가 논리 및 플러그인을 사용하면 응용 프로그램에서 동적 언어 지원을 얻을 수 있습니다.
인용 :[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/jsonlocalisation
[8] https://www.mvvmcross.com/documentation/fundamentals/linking
[9] https://www.mvvmcross.com/blog/