答案是不。看到这里,左宗棠已经在评论里说了。
由于 ToggleSwitch 的默认行为不会反映运行时的语言变化,我通过编写一个转换器来解决这个问题,该转换器从 ResourceLoader 获取特定于语言的翻译并将 ToggleSwitch 的OnContent
和OffContent
属性绑定到其IsOn
属性。您必须在特定语言的资源字符串文件中提供“开”和“关”文本的翻译。
转换器:
class BoolToToggleSwitchOnOffContentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is bool boolValue)
{
var resourceLoader = ResourceLoader.GetForCurrentView();
var resourceString = "ToggleSwitch" + (boolValue ? "On" : "Off");
return resourceLoader.GetString(resourceString);
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
// I'm afraid I can't do that, Dave!
throw new NotImplementedException();
}
}
XAML:
<ToggleSwitch
IsOn="{Binding SomeIsOnBinding, Mode=TwoWay}"
OnContent="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsOn, Converter={StaticResource BoolToToggleSwitchOnOffContentConverter}"
OffContent="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsOn, Converter={StaticResource BoolToToggleSwitchOnOffContentConverter}" />