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

iqxoj9l9  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(141)

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

jjhzyzn0

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”部分。
然而,如果建议的多语言工具包更容易或不我不知道。我没有使用多语言工具。

xhv8bpkk

xhv8bpkk2#

当你想从视图模型中获取值时,绑定使用Text="{Binding Label}"。缺点是你必须根据语言处理文本的转换。
x:Uid应该在Strings->en_US文件夹中指定。您默认创建一个资源文件Resources.resw文件,在其中添加Name,比如Sample.Text和它的Value作为Your Text
在你的XAMl中,你应该使用x:Uid=“Sample”。
现在,根据您的要求,当您使用多语言工具包添加更多语言时,它将处理所需语言的转换,并在上传到存储时,它将从应用程序包中选择特定语言,因此用户可以在其设备上选择的特定语言中查看应用程序。

相关问题