2011-02-06 6 views
0

WPF의 로컬 리 제이션 메소드에 대한 소규모 연구를하고 있습니다. 나는 태그 확장과 아이디어에 대해 들어 :WPF, 로컬 리 제이션 : 컨트롤 값 재평가

<Label Content="{local:Translate {-- label ID here --}}" />

내가 정말이 솔루션을 좋아한다 : 그것은 구현하기가 매우 쉽고 멋지게 유연한 것 같다. 그러나 나는 한 가지 우려를 가지고있다. 사용자가 런타임에서 로케일을 변경한다고 가정 해 보겠습니다. 현지화 된 속성이 새로운 언어와 일치하도록 재평가되는 것을 보장하는 방법은 무엇입니까?

답변

0

DependencyObject.InvalidateProperty으로 전화해야합니다. INotifyPropertyChanged을 구현하는 객체에 바인딩하는 경우 기본 데이터가 변경되어 다시 평가됩니다.

DependencyObject.InvalidatePropertyDependencyProperty (예 : Label.Content)에서 호출 할 수 있습니다.

Label label = new Label(); 
label.InvalidateProperty(ContentProperty); 

이것은 재평가가 필요한 다양한 속성에 대해 수행해야합니다. 조사해야 할 다양한 대안을위한 WPF 내의 로컬라이제이션에 대해서는 깊이가 article on MSDN입니다.

+0

좀 더 자세히 알려주시겠습니까? 지역 화하는 모든 컨트롤에서이 메서드를 호출해야합니까? – Spook

+0

@ Spook 추가 논평 추가 ... –

+0

감사합니다. 나는 작은 개념 증명 어플 리케이션을 바인딩과 함께 작성했다 (마크 업 확장은 결국 하나를 생성 할 것이다). 그러나 WPF가 단추의 Content 속성을 다시 평가하도록 만들 수는 없습니다. XAML은 여기 [link] (http://pastebin.com/MuSEMR95) 및 C# 소스는 [link] (http://pastebin.com/8m0nPgkJ)에 있습니다. 너는 나에게 무엇을 잘못했는지 말해 줄 수 있니? – Spook