UWP-我如何在datatemplate中引用变量字符串?

时间:2016-06-08 18:50:21

标签: c# resources uwp datatemplate

给出一些上下文:在我们的应用程序中,我们有一系列术语存储在数据库中。我们在内部使用一些密钥来引用我们的术语,而我们的客户决定应该显示哪些文本代替。这对我们的Web应用程序很有效。

然而,对于我们的UWP应用程序,我们在DataTemplates中遇到了麻烦。我理解它的方式,数据模板的工作方式如下:

<DataTemplate x:DataType="ObjectWithAllInformation">
    <Element Property={x:Bind PropertyOnAboveObject} />
</DataTemplate>

问题是我们想要绑定在特定对象的上下文之外存在的东西。我们想做这样的事情:

<DataTemplate x:DataType="ObjectWithAllInformation">
    <Textblock Text="{Some sort of binding to a global terms object?}" />
    <Element Property={x:Bind PropertyOnAboveObject} />
</DataTemplate>

有没有办法实例化我们可以通过这种方式在数据模板中引用的全局资源?我尚未尝试过的东西刚刚出现在我脑海中的是自定义用户控件可能会起作用,但访问字符串似乎有些过分。有没有一种简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用this quick-start

中提供的本地化机制

总之,您将在解决方案“Strings / culture-code ”中的已知文件夹中创建资源文件(.resw) - 其中 culture-code 是您资源的语言。您在那里定义字符串,然后通过文本块上的x:Uid属性引用它们

<DataTemplate x:DataType="ObjectWithAllInformation">
    <Textblock x:Uid="resource1" />
    <Element Property={x:Bind PropertyOnAboveObject} />
</DataTemplate>

并且相应的资源文件将具有

resource1.Text: "whatever static text you need to define"

请注意,在定义资源时,您使用的是x:Uid字段中使用的相同值,并在其前面加上需要使用该值设置的属性,在您的情况下为“Text”。如果需要,您可以使用此机制将值设置为其他属性,如Headers,PlaceholderText等...