在uwp中访问xaml布局中的.resx字符串资源

Cho*_*ski 3 c# xaml win-universal-app

我想直接在我的xaml布局中访问资源,官方文档给我们一些不好的例子,所以我无法让它工作.假设如下Resources.resw:

在此输入图像描述

我可以从C#类访问我的字符串资源,如下所示:

 var loader = new ResourceLoader();
 var resourceString = loader.GetString("txt_ok");
Run Code Online (Sandbox Code Playgroud)

我如何在xaml中访问此资源以获取TextBlock文本?

<TextBlock
  x:Name="MyTextBox"
  Text="I want to get string resource here"/> 
Run Code Online (Sandbox Code Playgroud)

我在这里这里尝试了一些例子,但没有成功

Gra*_*eng 7

在UWP应用程序中,当您在资源文件中定义字符串资源时Name,此字符串的属性可以是"Name"或"Name.Property".

在xaml代码中,我们使用Uidattribute将控件与资源相关联,但是当我们在xaml代码中使用资源时,我们必须将指定的属性添加到资源的名称,以防控件不知道应该将哪个属性应用于字符串资源.

这在后面的代码中是相同的,您可以使用资源

 var loader = new ResourceLoader();
 var resourceString = loader.GetString("txt_ok"); 
Run Code Online (Sandbox Code Playgroud)

但是你仍然需要将它设置为例如resourceStringText属性TextBlock:

txt.Text = resourceString;
Run Code Online (Sandbox Code Playgroud)

因此,如果要在xaml代码中直接使用字符串资源,则需要编辑资源文件,如下所示:

在此输入图像描述

现在,您可以TextBlock将您的资源与此相关联:

<TextBlock x:Uid="txt_cancel" />
Run Code Online (Sandbox Code Playgroud)

或者像这样(不是100%正确,它取决于资源文件的位置):

<TextBlock x:Uid="/Resources/txt_settings" />
Run Code Online (Sandbox Code Playgroud)

添加: 您还可以在资源文件中定义其他属性,例如:

在此输入图像描述

当您将此资源应用于TextBlock:

<TextBlock x:Uid="MyApp" />
Run Code Online (Sandbox Code Playgroud)

你会看见:

在此输入图像描述