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

时间:2016-06-23 04:16:47

标签: xaml binding windows-phone-8.1 uid

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

2 个答案:

答案 0 :(得分:0)

当您希望从viewmodel获取值时,使用Text="{Binding Label}"绑定。你将不得不根据语言处理文本的转换 x:Uid应该在Strings->en_US文件夹中指定。您创建一个默认Resources.resw文件中的资源文件,您添加Name文件Sample.TextValue 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”部分。

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