2011-09-01 64 views
3

Silverlight Toolkit有一個名爲Resources.resx的資源文件,其中包含交換機的「On」和「Off」字符串狀態。但是,當我添加了相應的本地化資源Resources.ru-RU.resx時,它並沒有被本地化(儘管類似的方法適用於我自己的資源)。如何本地化Windows Phone 7上的ToggleSwitch(本地化Silverlight工具包)?

一種方法是爲ToggleSwitch Content創建我自己的綁定,但我希望得到一個非編碼解決方案。可能?

回答

2

您需要命名您的資源文件ControlResources.ru-RU.resx,請參閱Andrej Torzen's article的主題。

+0

但它沒有。也許我應該做一些除了創建Resources.ru-RU.resx –

+0

之外的東西哦,對,名稱需要是ControlResources.ru-RU.resx,不是資源,請參閱http://tozon.info/blog/post/2011/ 08/18 /本地化2011年8月 - Windows-Phone-Toolkit.aspx,如果它有效,我會用它更新答案。 –

+0

這適用於除ToggleSwitch的「On」/「Off」標籤之外的所有內容 - 由於某種原因,它們不在ControlResources.resx文件中,而是在「屬性」文件夾中的Resources.resx中。也許傑夫認爲「開」/「關」不應該本地化?無論如何,很好的答案。 –

6

本地化ToggleSwitch在Silverlight工具包可以通過的DataTemplate

<toolkit:ToggleSwitch x:Name="MySwitch" Header="Localized Switch"> 
     <toolkit:ToggleSwitch.ContentTemplate> 
      <DataTemplate> 
       <ContentControl HorizontalAlignment="Left" 
        Content="{Binding Converter={StaticResource Switch}}"/> 
      </DataTemplate> 
     </toolkit:ToggleSwitch.ContentTemplate> 
    </toolkit:ToggleSwitch> 

聲明一個ValueConverter被achived:

public class BoolToSwitchConverter : IValueConverter 
    { 
     private string FalseValue = Resources.Off; 
     private string TrueValue = Resources.On; 

     public object Convert(object value, Type targetType, object parameter, 
       System.Globalization.CultureInfo culture) 
     { 
      if (value == null) 
       return FalseValue; 
      else 
       return ("On".Equals(value)) ? TrueValue : FalseValue; 
     } 

     public object ConvertBack(object value, Type targetType, 
       object parameter, System.Globalization.CultureInfo culture) 
     { 
      return value != null ? value.Equals(TrueValue) : false; 
     } 
    } 

更多細節here