2011-02-06 38 views
0

我正在做一個關於WPF本地化方法的小型研究。我聽說有標記擴展的想法:WPF,本地化:重新評估控制值

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

我喜歡這種解決方案非常:它是非常容易實現,似乎是很好的靈活性。然而,我有一個問題。假設該用戶更改運行時的區域設置。如何確保本地化的屬性將被重新評估以匹配新語言?

回答

0

您需要致電DependencyObject.InvalidateProperty。請記住,如果您綁定到實施INotifyPropertyChanged的對象,則它們將通過基礎數據更改來重新評估。

DependencyObject.InvalidateProperty可以在給定的DependencyProperty上調用,例如Label.Content

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

對於需要重新評估的不同屬性,必須完成此操作。關於WPF中關於不同替代方案的本地化有一個深入的article on MSDN,應該進行調查。

+0

你能告訴我更多一點嗎?我應該在我本地化的每一個控制上調用這個方法嗎? – Spook 2011-02-06 21:28:25