答えはノーだ。ここを参照してください。ジェイ・ズオはすでにコメントで述べています。
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}" />