我正在创建一个可以显示多种语言的菜单,所以我想在每个项目上设置这些TextBlock的Uid,如何通过数据绑定在XAML中设置TextBlock的Uid。因为当我设置x:Uid =“{Binding Label}”时,IDE显示这是一个错误。请帮帮我,谢谢!
答案 0 :(得分:0)
当您希望从viewmodel获取值时,使用Text="{Binding Label}"
绑定。你将不得不根据语言处理文本的转换
x:Uid
应该在Strings->en_US
文件夹中指定。您创建一个默认Resources.resw
文件中的资源文件,您添加Name
文件Sample.Text
,Value
Your Text
。{
在你的XAMl中,你应该使用x:Uid =“Sample”
现在根据您的要求,当您使用多语言工具包添加更多语言时,它将处理所需语言的转换,并且在上传到存储时,它将从应用程序包中选择特定语言,因此用户以他们在设备上选择的特定语言查看应用程序。
答案 1 :(得分:0)
如果要使用字符串文件夹中的翻译,则可以将Text变量绑定到文本键并使用值转换器,然后在后面的代码中查找翻译后的文本,而不是绑定到x:Uid值。
所以Xaml看起来像:
<TextBlock Text="{Binding Label, Converter={StaticResource TranslatorConverter}}"/>
然后您需要值转换器:
public class TranslatorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
return resourceLoader.GetString(((String)value)); ;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
然后,您的Resources.resw文件中的“标签”将不包含您使用x:Uid绑定时使用的“ .text”部分。
但是,我不知道建议的多语言工具包是否更容易。我还没有使用多语言工具。