我正在制作一个可以显示多种语言的菜单,所以我想在每个项目上设置这些TextBlock的Uid,我如何通过数据绑定在XAML中设置TextBlock的Uid。因为当我设置x:Uid="{Binding Label}"时,IDE显示这是一个错误。请帮助我,谢谢!
jjhzyzn01#
如果你想使用strings文件夹中的翻译,你可以将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.GetForViewIndependentUse(); return resourceLoader.GetString(((String)value)); ; } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } }
型Resw文件中的“Label”应该没有x:Uid绑定时使用的“.text”部分。然而,如果建议的多语言工具包更容易或不我不知道。我没有使用多语言工具。
xhv8bpkk2#
当你想从视图模型中获取值时,绑定使用Text="{Binding Label}"。缺点是你必须根据语言处理文本的转换。x:Uid应该在Strings->en_US文件夹中指定。您默认创建一个资源文件Resources.resw文件,在其中添加Name,比如Sample.Text和它的Value作为Your Text。在你的XAMl中,你应该使用x:Uid=“Sample”。现在,根据您的要求,当您使用多语言工具包添加更多语言时,它将处理所需语言的转换,并在上传到存储时,它将从应用程序包中选择特定语言,因此用户可以在其设备上选择的特定语言中查看应用程序。
Text="{Binding Label}"
x:Uid
Strings->en_US
Resources.resw
Name
Sample.Text
Value
Your Text
2条答案
按热度按时间jjhzyzn01#
如果你想使用strings文件夹中的翻译,你可以将Text变量绑定到一个文本键,并使用一个值转换器,然后在代码后面找到翻译后的文本,而不是绑定到x:Uid值。
所以Xaml看起来像这样:
字符串
然后你需要一个值转换器:
型
Resw文件中的“Label”应该没有x:Uid绑定时使用的“.text”部分。
然而,如果建议的多语言工具包更容易或不我不知道。我没有使用多语言工具。
xhv8bpkk2#
当你想从视图模型中获取值时,绑定使用
Text="{Binding Label}"
。缺点是你必须根据语言处理文本的转换。x:Uid
应该在Strings->en_US
文件夹中指定。您默认创建一个资源文件Resources.resw
文件,在其中添加Name
,比如Sample.Text
和它的Value
作为Your Text
。在你的XAMl中,你应该使用x:Uid=“Sample”。
现在,根据您的要求,当您使用多语言工具包添加更多语言时,它将处理所需语言的转换,并在上传到存储时,它将从应用程序包中选择特定语言,因此用户可以在其设备上选择的特定语言中查看应用程序。