2011-01-27 7 views
3

우리는 다국어 지원이 필요한 WPF & MVVM 응용 프로그램을 개발 중입니다. 정적 텍스트가있는 각 컨트롤에서 변환기를 사용하여 사용자 언어에 적합한 단어를 찾습니다.디자인 타임에서 WPF 레이블, 단추 등으로 바인딩?

그러나 각 컨트롤에는 텍스트가 표시되지 않습니다. 이것은 디자인 타임에 UI 개발자에게 약간의 자극을줍니다. 디자인 타임 텍스트를 표시하는 방법이 있습니까? 예를 들어

:

나는이 변환기가 변환 컨버터 매개 변수를 표시하기 위해 디자인 타임에 수행 할 수있는 방법
 <TextBlock> 
      <TextBlock.Text> 
       <Binding Converter="{StaticResource Translator}" 
         Path="Controller" 
         ConverterParameter="Search for" /> 
      </TextBlock.Text> 
     </TextBlock> 

?

답변

1

먼저 나는 markup extension을 사용하는 것이 좋습니다. 그러면 마크 업이 다음과 같이 보입니다.

<TextBlock Text="{my:Localize Key=MyLabel, Default='The text you want to be displayed by default'}" .../> 

기본 텍스트가 블렌드에도 표시됩니다.

둘째로 변환기가 유효한 기본 텍스트를 반환하는 한 변환기 접근 방식의 문제는 보이지 않습니다. 즉, 변환기는 런타임뿐만 아니라 디자인 타임에 실행되어야합니다.

+0

당신이 명확히 할 수 있습니까? 마크 업 확장 프로그램은 매우 광범위한 주제입니다. 위의 편집 코드에서 마크 업 확장을 사용하고 있습니다. 모든 바인딩은 마크 업 확장입니다. 디자인 타임에 변환기를 어떻게 실행시킬 수 있습니까? – Daniel

+0

변환기는 디자인 타임 중에 실행해야합니다. 귀하의 경우 문제는 데이터 컨텍스트가 올바른 개체로 설정되지 않아서 "컨트롤러"경로를 확인할 수 없다는 것입니다. –

+0

컨트롤러 개체는 위의 TextBlock이 포함 된 View의 ViewModel 속성이며 런타임까지 인스턴스화되지 않습니다. – Daniel