我正在制作一个可以显示多种语言的菜单,所以我想在每个项目上设置这些TextBlock的Uid,如何通过数据绑定在XAML中设置TextBlock的Uid。因为当我设置 x:Uid="{Binding Label}" 时,IDE 显示这是一个错误。请帮助我,谢谢!
如果您想使用字符串文件夹中的翻译,您可以将 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();
}
}
Resources.resw 文件中的“标签”将不再包含使用 x:Uid 绑定时使用的“.text”部分。
但是,我不知道建议的多语言工具包是否更容易。我没有使用过多语言工具。
当您希望从视图模型中获取值时,使用绑定
Text="{Binding Label}"
。缺点是你必须根据语言处理文本的转换。x:Uid
应该在 Strings->en_US
文件夹内指定。默认情况下,您创建一个资源文件 Resources.resw
文件,在其中添加 Name
让我们说 Sample.Text
及其 Value
为 Your Text
。