Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross는 일회성 바인딩을 사용하여 언어 파일 업데이트를 어떻게 처리합니까?


MVVMCross는 일회성 바인딩을 사용하여 언어 파일 업데이트를 어떻게 처리합니까?


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/