2011-09-27 9 views
4

Devexpress Tool을 사용하고 다음 MVVM 패턴을 사용하는 wpf 응용 프로그램에서 작업 중입니다.MVVM 패턴을 사용하여 Wpf 응용 프로그램에서 현지화를 구현하는 방법은 무엇입니까?

Locbaml 도구를 사용하여 현지화를 적용했으며 완벽하게 정상적으로 작동하지만보기에서만 작동합니다.

이 응용 프로그램에서 나는 Grid Row Vlidation 오류를 설정하고 View Model에서 일부 MessageBox를 팝업하지만 LocBaml이 다른 언어로 이러한 오류 메시지와 메시지 상자 메시지를 변환하는 데 도움이되지 않습니다. 이것을 어떻게 할 수 있습니까?

답변

0

ViewModel에서 직접 messagebox를 갖는 것은 잘못입니다. 대신 이벤트를 발생시키고 뷰가 UI를 수행하도록해야합니다. 그렇지 않으면 ViewModel을 단위 테스트 할 수 없으며 이것이 MVVM 패턴의 주요 목표 중 하나입니다.

+0

뷰 모델에서 직접 가져 오지는 않습니다. 메신저 도우미 클래스를 뷰에 유지했으며 viewmodel에서 메시지를 호출하고 메시지를 전달합니다. 내 질문에 어떻게 내가 BamTool보기 섹션에 대한 일을 같은 선택한 언어로보기 모델에서 전달하는 메시지 텍스트를 자동으로 변환 할 수 있습니다. – Syeda

+0

그러면 메시지를 ViewModel에서 직접 전달하지 않고보기가 올바른 메시지를 찾아서 현지화 할 수있게하는 키를 전달할 수 있습니다. –

0

번역을 관리하기 위해 .resx 파일을 사용하는 경우 .resx 화면의 콤보 상자에 Access Modifier : Public을 사용하여 코드를 생성하고 VM이 직접 메시지를 전망.

그런 식으로 코드 생성 리소스 파일의 기본 기능이 원하는 텍스트의 번역 된 버전을 반환합니다.

+0

좋은 설명. – Amar

1

LocBaml은 당신 XAML 파일의 컴파일 된 형태이다 BAML에서 물건을 추출합니다. xaml에 정의되지 않은 것 (예 : 코드 숨김에 정의 된 문자열)은 그 코드에서 결코 볼 수 없습니다. 이 문제를 해결할 수있는 유일한 방법은 xaml에서 문자열 리소스로 지역화하려는 모든 문자열을 정의하는 것입니다. 이러한 코드 숨김은 코드 숨김에서 쉽게 참조 할 수 있으므로 소리가 나쁘지는 않습니다. 완전히 동적으로 생성 된 문자열은 지역화 할 수 없지만 일부 작업에서는 xaml 자원에 정의 된 조각으로 구성 할 수 있습니다.

0

내가이 일을 쓴 일부 소프트웨어에서 좀 걸릴 수 있습니다 :이 도움이

http://tap-source.com/?p=232

희망을.

+1

이것은 이론적으로 질문에 대답 할 수 있지만 여기에 대답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackexchange.com/q/8259). – oers

관련 문제