如何在XAML中绑定TextBlock的x:Uid?

问题描述 投票:0回答:2

我正在制作一个可以显示多种语言的菜单,所以我想在每个项目上设置这些TextBlock的Uid,如何通过数据绑定在XAML中设置TextBlock的Uid。因为当我设置 x:Uid="{Binding Label}" 时,IDE 显示这是一个错误。请帮助我,谢谢!

xaml binding windows-phone-8.1 uid
2个回答
1
投票

如果您想使用字符串文件夹中的翻译,您可以将 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”部分。

但是,我不知道建议的多语言工具包是否更容易。我没有使用过多语言工具。


0
投票

当您希望从视图模型中获取值时,使用绑定

Text="{Binding Label}"
。缺点是你必须根据语言处理文本的转换。
x:Uid
应该在
Strings->en_US
文件夹内指定。默认情况下,您创建一个资源文件
Resources.resw
文件,在其中添加
Name
让我们说
Sample.Text
及其
Value
Your Text

在您的 XAMl 中,您应该使用 x:Uid="Sample"。
现在,根据您的要求,当您使用多语言工具包添加更多语言时,它将处理所需语言的转换,并且在上传到存储时,它将从应用程序包中选择特定语言,因此用户以他们在设备上选择的特定语言查看应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.