在描述属性中使用资源字典 C#

问题描述 投票:0回答:1

我正在开发一个应用程序(WPF),我们需要将其翻译成不同的语言,当语言设置更改时,我很难翻译下拉列表。

我的团队同意我们将使用资源字典,我正在研究的是从枚举构建列表;我使用“描述”属性来显示下拉列表中的值,而不是枚举。如何从资源字典中获取要提取的值?

我在想这样的事情: [描述(Application.Current.Resources["要显示的值"])]

但我知道描述需要是绝对的,所以我假设我需要编写某种扩展,但我不知道是什么。任何帮助将不胜感激。

[描述(Application.Current.Resources[“要显示的值”])]

c# dictionary wfp
1个回答
0
投票

属性参数值必须能够在编译时完全解析。如果您使用诸如

Application.Current.Resources["Value to display"]
之类的表达式,编译器将无法解析它。

你需要做的就是使用资源key作为属性参数,然后在运行时解析它。

Description("Value to display")

要在运行时解决它,您有两种选择:

  1. 方案1:使用反射来识别具有该属性的类型,然后使用属性参数进行操作。

  2. 选项 2:创建一个源生成器,该生成器将为带注释的类生成一个扩展方法,该方法将资源键解析为其值。当然,带注释的类必须标记为

    partial
    。请参阅https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/source-generators-overview

© www.soinside.com 2019 - 2024. All rights reserved.