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

标签 c# xaml win-universal-app

我想直接在我的 xaml 布局和官方中访问资源 doc给我们一些糟糕的例子,所以我无法让它发挥作用。假设以下 Resources.resw :

enter image description here

我可以像这样从 C# 类访问我的字符串资源:

 var loader = new ResourceLoader();
 var resourceString = loader.GetString("txt_ok");

例如,对于 TextBlock 文本,我如何在 xaml 中访问此资源?

<TextBlock
  x:Name="MyTextBox"
  Text="I want to get string resource here"/> 

我正在尝试来自 here 的一些示例或 here但没有成功

最佳答案

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

在xaml代码中,我们使用Uid属性将控件关联到资源,但是当我们在xaml代码中使用资源时,我们必须将指定的属性添加到资源的名称中,以防控件不使用不知道应该对字符串资源应用什么属性。

这在后面的代码中是一样的,你使用获取资源

 var loader = new ResourceLoader();
 var resourceString = loader.GetString("txt_ok"); 

但您仍然需要将此 resourceString 设置为 TextBlockText 属性,例如:

txt.Text = resourceString;

因此,如果您想在 xaml 代码中直接使用字符串资源,则需要像这样编辑您的资源文件:

enter image description here

现在您可以像这样将您的 TextBlock 关联到您的资源:

<TextBlock x:Uid="txt_cancel" />

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

<TextBlock x:Uid="/Resources/txt_settings" />

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

enter image description here

当您将此资源应用于 TextBlock 时:

<TextBlock x:Uid="MyApp" />

你会看到:

enter image description here

关于c# - 在 uwp 的 xaml 布局中访问 .resx 字符串资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36130859/

相关文章:

c# - 如何在 C# 中将类型转换为 TEnum

c# - 在 .NET 中使用十进制或十六进制

c# - 如何将焦点设置在列表框项目上?

c# - 如何在Windows Phone中创建一个等待特定时间的函数?

c# - 如何在 Windows Phone 的 RichTextBlock 中实现滚动

c# - 管理 GUI 状态的最佳方法是什么(创建、编辑、读取模式...)

c# - 使用 ObjectId.GenerateNewId() 还是离开 MongoDB 来创建一个?

c# - 如何在不更改 viewmodel 的属性 getter 的情况下在 XAML 中格式化字符串?

c# - 通过绑定(bind)在 TextBlock 中创建超链接

c# - 发送聊天消息